Скажите, пожалуйста, зачем при создании графических интерфейсов при помощи 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()
Скажите, пожалуйста, где я не прав и почему использовать наследование важно? Какие плюсы это даёт?