Вы должны использовать destroy()
, чтобы закрыть окно tkinter.
from Tkinter import *
root = Tk()
Button(root, text="Quit", command=root.destroy).pack()
root.mainloop()
Пояснение:
root.quit()
В приведенной выше строке просто Обходит root.mainloop()
т.е. root.mainloop()
все равно будет работать в фоновом режиме, если будет выполнена команда quit()
.
root.destroy()
Пока destroy()
команда исчезает root.mainloop()
т.е. root.mainloop()
останавливается.
Так как вы просто хотите выйти из программы, вы должны использовать root.destroy()
, так как это остановит mainloop()
.
Но если вы хотите запустить какой-то бесконечный цикл и не хотите разрушать свое окно Tk и хотите выполнить некоторый код после строки root.mainloop()
, тогда вам следует использовать root.quit()
. Пример:
from Tkinter import *
def quit():
global root
root.quit()
root = Tk()
while True:
Button(root, text="Quit", command=quit).pack()
root.mainloop()
#do something