我在基于Debian的Oracle VB操作系统上运行APT-GET更新。当它运行时,我在IDLE 2.7.12中弄乱了一些python代码(我用终端打开它)。更新完成后,我尝试保存我的代码。在我打开IDLE的终端中,我得到了一个错误。它是这样写的:
root@kali: ~ #闲置
Idle打开,我加载我的代码,编辑我的代码,然后我点击[FILE] [SAVE]
发生这种情况
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1545, in __call__
return self.func(*args)
File "/usr/lib/python2.7/idlelib/ScriptBinding.py", line 140, in run_module_event
filename = self.getfilename()
File "/usr/lib/python2.7/idlelib/ScriptBinding.py", line 205, in getfilename
self.editwin.io.save(None)
File "/usr/lib/python2.7/idlelib/IOBinding.py", line 345, in save
if self.writefile(self.filename):
File "/usr/lib/python2.7/idlelib/IOBinding.py", line 378, in writefile
chars = self.encode(self.text.get("1.0", "end-1c"))
File "/usr/lib/python2.7/idlelib/IOBinding.py", line 450, in encode
dialog = EncodingMessage(self.editwin.top, enc)
File "/usr/lib/python2.7/idlelib/IOBinding.py", line 76, in __init__
self.root = top = Toplevel(master)
NameError: global name 'Toplevel' is not defined
显示错误
的终端图片我已经尝试重新启动VB,我已经卸载,自动清理,然后重新安装IDLE没有运气
打开IDLE。
选择
配置IDLE
一般
set 'Default Source Encoding': UTF-8
我在Windows 10和Ubuntu 16.04上运行Python 2.7.12,这解决了我在两个操作系统上的保存/崩溃IDLE问题。
为什么我觉得他们想把我们从Python 2推到Python 3 ?!jk。
此问题是IDLE更新版本中的错误。在.../Lib/idlelib/IOBinding.py
的顶部附近添加以下内容,例如在import tkFileDialog
之前。
from Tkinter import *
NameError发生在一个函数中,该函数显示一个带有以下消息的警告:
Non-ASCII found, yet no encoding declared. Add a line like
-*- coding: <enc> -*-
Choose OK to save this file as <enc>
Edit your general options to silence this warning
其中<enc>
为编码,如utf-8
。
我想到,如果该消息指向Python语言参考2.1.4节,可能对初学者更有帮助。,编码声明
这个bug是2。因为在Python3中,在没有编码声明的情况下默认使用utf-8。