【问题标题】:Tkinter causes SIGSEGV and system crash - how to fix?Tkinter 导致 SIGSEGV 和系统崩溃 - 如何修复?
【发布时间】: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


【解决方案1】:

结果出于某种原因,标准版本的 Tkinter (8.6.*) 不再正常运行。我找到了https://bugs.python.org/issue34927 并在更新到 Tkinter 8.6.9 (conda forge) 后不久,这似乎已经解决了这个问题。

【讨论】:

    【解决方案2】:

    我有同样的问题(很长一段时间我必须使用linux机器来运行我的脚本)。但是,您可以通过以下方式解决问题 conda install -c zeus1942 tk 这是我评论时的 Tkinter 8.6.10 最新版本。它解决了我的问题,但并非总是如此。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-12
      • 2013-04-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-07
      • 2015-02-15
      • 1970-01-01
      • 2019-03-06
      相关资源
      最近更新 更多