Рубрики
Без рубрики

Python Turtle Графика и программирование Tkinter GUI

Урок программирования Python промежуточного уровня в отношении отношения между графическим модулем Python Turtle и Python Tkinter GUI программирования.

Автор оригинала: Robin Andrews.

Это Промежуточный уровень Урок программирования Python. Обсуждается связь между Python Черепаха графика Модуль и Python TKINTER GUI Программирование Отказ Если вы еще не промежуточный программист Python, у нас есть Другие уроки на этом сайте В частности, о Python Turtle Graphics, которые, вероятно, будут более подходящими.

Графический модуль Python Turtle на самом деле построен на вершине Tkinter , который является более мощным, библиотекой Python общего назначения для строительства GUI (графические пользовательские интерфейсы).

Все методы черепахи, которые вы, вероятно, знакомы с использованием основных методов TKinter. Например, следующая программа создает экран Где мы можем разместить объекты черепахи и позволяют нам контролировать атрибуты этого экран такие как его размер, название, цвет и т. Д. Это не важно явно создать экран Объект при работе с черепаховой графикой, но очень полезно сделать это иногда. Экран, который мы создаем, используя этот код, на самом деле используются Виджеты Tkinter под капотом. Мы узнаем больше о которых в ближайшее время.

Листинг кода Python для создания экрана графики черепахи

import turtle

screen = turtle.Screen()
screen.title("A Turtle Graphics Screen")
screen.setup(600, 600)
screen.bgcolor("cyan")

turtle.done()

Принимая графику Python Turtle к следующему уровню

Как только вы работали с графикой Python Turtle на некоторое время, вы можете обнаружить, что есть вещи, которые вы хотели бы сделать в своих программах, которые трудно или, казалось бы, невозможными только с доступными Черепаха команды. Один общий пример этого для меня создает Кнопки Отказ Это может быть сделано, используя только Черепаха Методы, но это немного faff, и есть гораздо проще, используя немного Tkinter Чтобы перезарядить свой Черепаха программа. Пример использования Tkinter Чтобы сделать кнопку Insider A Черепаха Программа приведена ниже.

Получите бесплатное приложение Tkinter KickStart здесь!

Нажмите на изображение выше, чтобы получить код.

Использование кнопки TKinter внутри программы Python Turtle

import turtle
import tkinter as tk


def do_stuff():
    for color in ["red", "yellow", "green"]:
        my_lovely_turtle.color(color)
        my_lovely_turtle.right(120)


def press():
    do_stuff()


if __name__ == "__main__":
    screen = turtle.Screen()
    screen.bgcolor("cyan")
    canvas = screen.getcanvas()
    button = tk.Button(canvas.master, text="Press me", command=press)
    canvas.create_window(-200, -200, window=button)
    my_lovely_turtle = turtle.Turtle(shape="turtle")
    turtle.done()

Несколько комментариев, чтобы помочь вам понять этот код:

  • экран это пример Turtle.Screen ()
  • Как и в предыдущем примере холст дает нам доступ к базовому Tkinter Холст, где живут наши черепахи и играют.
  • кнопка это Tkinter Виджет Отказ Он расположен на экране первым аргументом Canvas.master , который ссылается на родительский элемент холста
  • Здесь есть несколько «слоев». Не волнуйтесь, если вы не понимаете их всех в этот момент. Ясность придет с опытом.
  • Один новый «трюк» вот использует canvas.create_window (-200, -200,) Чтобы разместить кнопку на холст Отказ

Лично я думаю, что это идеальное сочетание программной власти и простоты, и предположило бы, что учащиеся проводят справедливые программы по написанию времени (включая многие забавные игры), используя подход «Турбо-заряженная черепаха».

Тем не менее, есть место для более полноценного использования Tkinter и используя графику черепахи в Встроенный режим Отказ

Python Turtle работает в двух режимах: автономный и встроенный в большую программу TKinter. Вместо черепаха. Thurtle и Turtle.Screen , при использовании черепахи встроенные, вы работаете с Turtle.rawturtle и Turtle.turtlescreen Отказ Вы строите свой Tkinter Интерфейс по мере необходимости и использовать холст, чтобы содержать вашу черепахую графику.

Чтобы проиллюстрировать разницу между этими двумя подходами, я предоставил в основном ту же программу, что и выше, но на этот раз используя черепаху в встроенном режиме. Единственная значительная разница между этим другой программой является размещение кнопки.

Базовая черепаха Python, встроенная в программу Tkinter

import turtle
import tkinter as tk


def do_stuff():
    for color in ["red", "yellow", "green"]:
        my_lovely_turtle.color(color)
        my_lovely_turtle.right(120)


def press():
    do_stuff()


if __name__ == "__main__":
    root = tk.Tk()
    canvas = tk.Canvas(root)
    canvas.config(width=600, height=200)
    canvas.pack(side=tk.LEFT)
    screen = turtle.TurtleScreen(canvas)
    screen.bgcolor("cyan")
    button = tk.Button(root, text="Press me", command=press)
    button.pack()
    my_lovely_turtle = turtle.RawTurtle(screen, shape="turtle")
    root.mainloop()

Несколько компонентов вышеуказанного кода уже были объяснены выше для автономной версии, разница вот что мы явно используем Tkinter объекты и методы, а не Черепаха Эквивалены, которые вызывают их в любом случае, но предоставляют более дружественный интерфейс для начинающих.

Объектно-ориентированная программированная версия встроенной графической программы TKINT

Наконец, считается наилучшей практикой, чтобы использовать объектно-ориентированный стиль программирования при работе с Python Tkinter Отказ Поэтому я также предоставил код этого подхода. Ооп за пределами объема этой статьи, но если вы с ним знакомы, это может быть очень информативно, чтобы увидеть, как это относится к Tkinter заявление. Вот список Python для версии OOP:

import turtle
import tkinter as tk


class App:
    def __init__(self, master):
        self.master = master
        self.master.title("Raw Turtle")
        self.canvas = tk.Canvas(master)
        self.canvas.config(width=600, height=200)
        self.canvas.pack(side=tk.LEFT)
        self.screen = turtle.TurtleScreen(self.canvas)
        self.screen.bgcolor("cyan")
        self.button = tk.Button(self.master, text="Press me", command=self.press)
        self.button.pack()
        self.my_lovely_turtle = turtle.RawTurtle(self.screen, shape="turtle")
        self.my_lovely_turtle.color("green")

    def do_stuff(self):
        for color in ["red", "yellow", "green"]:
            self.my_lovely_turtle.color(color)
            self.my_lovely_turtle.right(120)

    def press(self):
        self.do_stuff()


if __name__ == '__main__':
    root = tk.Tk()
    app = App(root)
    root.mainloop()

Вот и все сейчас. В этой статье мы охватываем, как расширить Python Turtle Graphics С методами из Библиотека Python Tkinter GUI и как использовать Черепаха графика в Встроенный режим в оформлении Tkinter заявление.

Счастливые вычисления!