Python 最终Tkinter窗口不显示';程序终止时不能关闭

Python 最终Tkinter窗口不显示';程序终止时不能关闭,python,tkinter,macos-high-sierra,Python,Tkinter,Macos High Sierra,我正在使用Tkinter生成一个带有按钮的窗口,以关闭窗口并继续程序。但是,当按下按钮并调用top.destroy()时,主循环结束,程序继续运行,但窗口被留下,窗口没有响应 我使用的代码如下: from Tkinter import * top = Tk() w = Button(top, text="Close", command=top.destroy) w.pack() top.mainloop() print("program ended") 。当存在窗口时,不应显示程序结束

我正在使用Tkinter生成一个带有按钮的窗口,以关闭窗口并继续程序。但是,当按下按钮并调用
top.destroy()
时,主循环结束,程序继续运行,但窗口被留下,窗口没有响应

我使用的代码如下:

from Tkinter import *

top = Tk()
w = Button(top, text="Close", command=top.destroy)
w.pack()
top.mainloop()


print("program ended")
。当存在窗口时,不应显示程序结束

当我在空闲状态下运行程序时按下按钮时,如何使窗口关闭


我在
python2.7
python3.6
中使用IDLE(这两个版本的问题相同),使用的是Python的Anaconda安装,MacOS High Sierra版本10.13.6。

您正在创建
Tk()
的两个实例,您不应该这样做

除此之外,;删除以下行:

top = Tk()
w = Button(top, text="Close", command=top.destroy)
w.pack()
top.mainloop()
而且似乎效果不错


或者我误解了您想要的是什么…?

第二个方法是通过使用tkinter内联或使用类来演示这一点的。调用root.destroy()时,主循环停止,程序运行,但tkinter窗口没有响应。我会更新这个问题,让它更清楚。我无法复制这个。当我点击“关闭”时,窗口被破坏,程序继续打印“程序结束”。我在win10下运行Python3.6.5。搜索这个问题并不容易(因此我在这里问这个问题),但我认为这与MacOS有关,我认为它在windows/linux上很好,奇怪的是。你的代码似乎很好。。。也许你的装置不知怎么坏了?你有最新的x11(X石英)吗?我当时没有安装X石英。我已经安装了它,通过它运行程序会按预期关闭按钮按下窗口。通过终端运行时,也会模拟此行为。但是,当使用IDLE时,问题仍然存在。在我看来,Cocoa tk/tcl中一定有一个bug,这就是为什么安装XQuartz会有所帮助。此外,idle为什么不选择该版本而不是内置系统,这有点奇怪。如果使用python-midlelib从终端启动idle,会怎么样?我还发现了一篇讨论这个问题的文章,但我没有立即看到任何会导致您行为的东西。这似乎是一个反复出现的问题:标准库中甚至内置了一个编辑器,这很好,但我认为切换到更好的编辑器(如spyder或pycharm)可能会更容易。