【发布时间】:2019-07-29 16:09:35
【问题描述】:
我正在为一个 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)
【问题讨论】:
-
你是在终端/控制台
python script.py运行还是使用IDE/IDLE/editor运行? -
编辑了问题以包含您的答案!
-
我在 Python 3.7.4 中看到了完全相同的情况。和 Tk 8.6.8。对我来说,解决方案是将 Python 降级到 3.7.1。
标签: python macos tkinter segmentation-fault