当我在Mac上键入括号时,为什么Python的IDLE会崩溃?

时间:2016-03-17 06:28:37

标签: python macos tkinter crash python-idle

好的,我意识到这可能是一个非常微妙的问题,但它已经困扰了我一段时间。我喜欢IDLE的简单脚本界面,但在以下情况下它一直让我崩溃:(1)我在外部监视器上编码和(2)我输入括号按钮,“(”。IDLE因任何其他原因从未崩溃比如这个非常具体的情况。奇怪的是,如果我连接了一台外接显示器,但是我的笔记本电脑的主屏幕上有IDLE开发窗口,我有崩溃的ZERO问题。(???)我丢失了大量代码到期这个问题。

我在Mac OSX版本10.11.3上运行,我有一台MacBook Pro(Retina,15英寸,2015年中)任何想法都将不胜感激!

3 个答案:

答案 0 :(得分:3)

好的,回答我自己的问题。根据Андрей的推荐,我在这里回顾了注释和评论:http://bugs.python.org/issue16177我做了一些实验并想出了一个解决方法来避免这个问题。只有当您在外部监视器中进行编码并且外部监视器的“排列”设置为相对于主监视器更高(或更高)时,才会出现此问题。具体地说,当IDLE开发窗口完全或接近完全位于辅助屏幕上被认为是主屏幕顶部边缘的“北”的空间中时,就会发生这种情况。因此,补丁是重新配置Mac上的“排列”设置,以便监视器以近乎水平的方式系统地对齐。这可能会使事情变得不那么自然,但它会解决问题。话虽如此,我不知道问题的根本原因是什么。我很高兴终于弄明白这一点。希望这有助于至少一个人。

答案 1 :(得分:1)

我找到了修复!一个不需要更改显示器设置。

在IDLE:

选项菜单>配置扩展程序> CallTips>设为FALSE

然后重启。

进行了大量研究以找到超级简单的解决方案......问题不是由IDLE中的错误引起的,而是由于在默认监视器上方的外部监视器中调用calltips时mac的Tcl / Tk代码中的错误。

答案 2 :(得分:0)

在函数名称后键入'('会弹出一个提示框,给出该函数的签名(如果该函数当前是已知的。可以通过偶尔运行您的代码来使这些函数成为已知函数。)我们最近发现Mac OSX或MacOS和tcl / tk要求在idlelib/calltip_w.py(3.6+)或idlelib/CallTipWindow.py(3.5-)。Issue 34275

中增加一行。
    self.label.pack()  # Line 74
    tw.update_idletasks()  # ADD THIS LINE!
    tw.lift()

没有此选项,则不会出现提示。我不知道这是否还可以防止人们报告的任何崩溃。如果上述方法无效,请删除_idletasks并在评论中告知我。

相关问题