Зачем наследование в 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()


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

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

Войти через центр авторизации
Похожие вопросы