我正在为python项目开发Tkinter GUI。昨天一切都很好,但是今天当我运行mainloop()
命令时,我的Mac立即崩溃(返回登录屏幕)。
我试图通过减少GUI功能来隔离问题,但没有任何帮助。最简单的GUI甚至会出现问题。
我正在使用此演示代码:
from tkinter import Tk, Label, Button
class MyFirstGUI:
def __init__(self, master):
self.master = master
master.title("A simple GUI")
root = Tk()
my_gui = MyFirstGUI(root)
root.mainloop()
当我运行最后一行时,我的屏幕变黑一秒钟,然后返回MacOS登录屏幕。从终端运行脚本时也会发生。重复几次后,我发现此行在每次崩溃后都会在system.log中再次出现:
Jul 29 17:58:51 MacBook-Pro-myname com.apple.xpc.launchd[1] (com.apple.WindowServer[1510]): Service exited due to SIGSEGV | sent by exc handler[1510]
处理程序号对于每次崩溃都是唯一的。以安全模式启动可以解决问题,但是我当然不能永远生活在安全模式下:)
这似乎是某种内部问题,因为python代码再简单不过了。我不知道如何调试它,有人可以帮我吗?
已修复-由于某些原因,Tkinter开始弄乱我的机器。更新到8.6.9解决了该问题。 (请参阅:https://bugs.python.org/issue34927)
答案 0 :(得分:2)
出于某种原因,原来的标准版本的Tkinter(8.6。*)不再正常运行。我找到了https://bugs.python.org/issue34927,并在将其更新为Tkinter 8.6.9(conda forge)之后不久,似乎已经解决了该问题。
答案 1 :(得分:0)
我有同样的问题(很长时间以来,我不得不使用Linux机器来运行我的脚本)。但是,您可以通过以下方式解决问题
conda install -c zeus1942 tk
我评论时这是Tkinter 8.6.10的最新版本。它解决了我的问题,但并非总是如此。