当我通过终端打开空闲时,空闲会很好地打开,但一旦我试图滚动空闲窗口或稍微快速移动空闲窗口,它就会立即崩溃并出现错误:
Traceback (most recent call last):
File "/usr/local/bin/idle3", line 5, in <module>
main()
File "/usr/local/Cellar/python/3.7.1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/idlelib/pyshell.py", line 1552, in main
root.mainloop()
File "/usr/local/Cellar/python/3.7.1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/tkinter/__init__.py", line 1283, in mainloop
self.tk.mainloop(n)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
我尝试了命令brew reinstall python --with-tcl-tk
,但没有成功。我只得到错误Error: invalid option: --with-tcl-tk
。我尝试过几次完全卸载和重新安装,但都没有成功。我使用的是Tk 8.5.9版本,我已经用brew更新了它,但python似乎仍在使用旧版本。
虽然我不知道原因是什么,但我找到了解决方案。
在idlelib/editor.py
中
如果您注释掉第149行,IDLE在您尝试滚动时停止崩溃。
149 text.bind('<MouseWheel>', self.mousescroll)
150 text.bind('<Button-4>', self.mousescroll)
151 text.bind('<Button-5>', self.mousescroll)
这需要更改为:
149 ##text.bind('<MouseWheel>', self.mousescroll) # Now IDLE should work
150 text.bind('<Button-4>', self.mousescroll)
151 text.bind('<Button-5>', self.mousescroll)
这似乎也没有破坏任何东西,但确实解决了问题。
你可以通过运行找到这个文件
>>> import idlelib.editor
>>> idlelib.editor
<module 'idlelib.editor' from '/usr/local/Cellar/python/3.7.2_2/Frameworks/Python.framework/Versions/3.7/lib/python3.7/idlelib/editor.py'>
>>>
测试:
macOS Mojave 10.14.3
Python 3.7.2(来自
brew install python
(Tcl/Tk(8.5.9(
更新
这个问题也通过从python.org重新安装python得到了纠正。以前我使用的是一个酿造设备,这似乎引入了这个问题。
我今天刚刚将我的Macbook Air更新为Mojave和Python 3.7.1,后者带有PSF Python.org安装程序,该安装程序安装tcl/tk 8.6.8并编译tkinter以使用它。IDLE测试通过,IDLE运行正常,直到我手动测试为止。我强烈建议你也这样做。我无法支持任何其他安装。
在我看来,https://www.python.org/download/mac/tcltk/应更新为调用8.5.9"不推荐"。请参阅最后一节"Python如何选择要使用的Tk库",了解如何让Python识别更新的8.5.x
显然,莫哈韦的tk 8.6.8甚至存在问题。Mac tk开发人员今天刚刚在Python跟踪器上写道,tk tip中有一些更改,以适应Mojave API的更改。8.5不再更新。