Функция закрытия окна в Tkinter

import tkinter


class App():
   def __init__(self):
       self.root = Tkinter.Tk()
       button = Tkinter.Button(self.root, text = 'root quit', command=self.quit)
       button.pack()
       self.root.mainloop()

   def quit(self):
       self.root.destroy 

app = App()

Как я могу заставить мою функцию quit закрыть окно?

Ответ 1

def quit(self):
    self.root.destroy()

Добавьте круглые скобки после destroy, чтобы вызвать метод.

Когда вы используете command=self.root.destroy, вы передаете метод Tkinter.Button без круглых скобок, потому что вы хотите, чтобы Tkinter.Button сохранял метод для будущего вызова, а не сразу его вызывать при создании кнопки.

Но когда вы определяете метод quit, вам нужно вызвать self.root.destroy() в теле метода, потому что к тому времени был вызван метод.

Ответ 2

class App():
    def __init__(self):
        self.root = Tkinter.Tk()
        button = Tkinter.Button(self.root, text = 'root quit', command=self.quit)
        button.pack()
        self.root.mainloop()

    def quit(self):
        self.root.destroy()

app = App()

Ответ 3

def exit(self):
    self.frame.destroy()
exit_btn=Button(self.frame,text='Exit',command=self.exit,activebackground='grey',activeforeground='#AB78F1',bg='#58F0AB',highlightcolor='red',padx='10px',pady='3px')
exit_btn.place(relx=0.45,rely=0.35)

Это сработало для меня, чтобы уничтожить рамку Tkinter при нажатии кнопки выхода.