Вы должны использовать, 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()