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