结合 Tkinter 和 win32ui 使 Python 在退出时崩溃
Posted
技术标签:
【中文标题】结合 Tkinter 和 win32ui 使 Python 在退出时崩溃【英文标题】:Combining Tkinter and win32ui makes Python crash on exit 【发布时间】:2015-04-27 17:16:53 【问题描述】:在使用带有 Python 2.7 的 winapi(我在 Windows 8.1 上)构建基本应用程序时,我尝试在程序中添加一个小的 Tkinter gui。问题是,每当我关闭应用程序窗口时,Python 就会完全崩溃(基本上会收到崩溃消息)。
我在多个地方找到了有关此问题的报告,但找不到修复或解决方案。以下是一些来源:
http://sourceforge.net/p/pywin32/bugs/443/#8bde
http://www.gossamer-threads.com/lists/python/python/134956(这个是2002年的!)
最多可以复制这4行:
from Tkinter import Tk
import win32ui
root = Tk()
root.mainloop()
运行后关闭窗口。 有谁知道这个的解决方案?有什么解决方法的建议吗?
【问题讨论】:
嗯,可能是我安装的那个版本吧?当我有机会启动我的 Windows 机器时,我会检查我的 @eyalzek,我遇到了和你一样的崩溃。仅在导入 win32ui 并且 Tk 尝试关闭窗口时发生。我在多台机器上重新制作了它(使用 Windows Server 2008)。 我过去也遇到过这个错误,我最终只使用 Tkinter 来避免它。显然,窗口管理/UI 方面存在一些冲突......我不知道在你的情况下它是否可以避免,但如果我有选择的话,我总是从一开始就坚持一个框架。 我刚刚检查了 Py 3.6.4,看起来这个问题可能已经消失了。我认为它仍在 Py 3.6.3 中。有谁想确认 Python 3.6.4 和 PyWin32-221 解决了这个问题? 存在the "horrible hack" solution。 【参考方案1】:在 Windows 上创建一个按钮并通过此按钮关闭您的程序。这是我的脚本:
from tkinter import *
import win32ui
win = Tk()
frame = Frame(win)
frame.pack(padx = 10, pady = 10)
b1 = Button(frame, text = "Close", command = win.destroy)
b1.pack()
win.mainloop()
【讨论】:
【参考方案2】:一种解决方法是使用 pythonw 调用 Tkinter-win32UI 应用程序。 Python 不会崩溃。
在 Win 10 上使用 Python 3.6.3 测试。
【讨论】:
以上是关于结合 Tkinter 和 win32ui 使 Python 在退出时崩溃的主要内容,如果未能解决你的问题,请参考以下文章