Зачем наследование в tkinter?

Скажите, пожалуйста, зачем при создании графических интерфейсов при помощи tkinter принято наследовать класс от Frame и т.п.?

Вот классический пример кода, который используется почти всегда:

import tkinter
import tkinter.messagebox

class Quitter(tkinter.Frame):        
                 
    def __init__(self, parent=None):          
        tkinter.Frame.__init__(self, parent)
        self.pack()
        widget = tkinter.Button(self, text='Quit', command=self.quit)
        widget.pack(side='left', expand='yes', fill=tkinter.BOTH)

    def quit(self):
        ans = tkinter.messagebox.askokcancel('Verify exit', "Really quit?")
        if ans: tkinter.Frame.quit(self)

if __name__ == '__main__':  Quitter().mainloop()


По моему можно обойтись и без наследования. Например так:

import tkinter
 
class But_print():
     def __init__(self, parent):
          self.but = tkinter.Button(parent, text = 'press me', command = lambda: self.press(parent))
          self.but.pack()
          
     def press(self, parent):
          parent.destroy()
 
root = tkinter.Tk()
root2 = tkinter.Tk()
obj = But_print(root)
obj2 = But_print(root2)
root.mainloop()


Скажите, пожалуйста, где я не прав и почему использовать наследование важно? Какие плюсы это даёт?
  • Вопрос задан
  • 3038 просмотров
Пригласить эксперта
Ответы на вопрос 1
OnYourLips
@OnYourLips
Инкапсуляция логики в логическую единицу.
У вас же все в глобальную область навалено.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
ZClick Москва
от 50 000 до 100 000 руб.
Protoplan Краснодар
от 80 000 до 150 000 руб.
YLab Тольятти
от 90 000 до 150 000 руб.