Объектно-ориентированное программирование в 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».
