Объектно-ориентированное окно Tkinter в Python

Объектно-ориентированное программирование в Tkinter способно сделать код более организованным.

Определение объектно-ориентированного окна Tkinter

Следующая простая программа создает корневое окно и отображает его на экране:

import tkinter as tk
root = tk.Tk()
root.mainloop()

Когда программа становится более сложной, можно использовать подход объектно-ориентированного программирования, чтобы сделать код более организованным.

Следующая программа достигает того же результата, что и программа выше, но вместо этого использует class:

import tkinter as tk


class App(tk.Tk):
    def __init__(self):
        super().__init__()


if __name__ == "__main__":
    app = App()
    app.mainloop()

Как это работает.

  • Сначала определите класс App, который наследуется от класса tk.Tk. Внутри метода __init__() вызовите метод __init__() класса tk.Tk.
  • Во-вторых, создайте новый экземпляр класса App и вызовите метод mainloop() для отображения корневого окна.

Пример объектно-ориентированного окна в Tkinter

Следующий класс представляет окно, состоящее из метки и кнопки. При нажатии кнопки программа отображает окно сообщения:

import tkinter as tk
from tkinter import ttk
from tkinter.messagebox import showinfo


class App(tk.Tk):
  def __init__(self):
    super().__init__()

    # configure the root window
    self.title('My Awesome App')
    self.geometry('300x50')

    # label
    self.label = ttk.Label(self, text='Hello, Tkinter!')
    self.label.pack()

    # button
    self.button = ttk.Button(self, text='Click Me')
    self.button['command'] = self.button_clicked
    self.button.pack()

  def button_clicked(self):
    showinfo(title='Information', message='Hello, Tkinter!')

if __name__ == "__main__":
  app = App()
  app.mainloop()

Как это работает.

  • Сначала создайте метку и кнопку в методе __init__() класса App.
  • Во-вторых, назначьте метод button_clicked() опции команды кнопки. Внутри метода button_clicked() отобразите окно сообщения.
  • В-третьих, переместите начальную загрузку приложения в блок if __name__ = «main».
Похожие посты
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *