IDLE 2.7.11/12 "NameError: global name 'Toplevel' is not defined"
IDLE 2.7.11/12 "NameError: global name 'Toplevel' is not defined"
我 运行 在基于 OS 的 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
Picture of my terminal with the error
我已经尝试重新启动 VB,我已经卸载、自动清理,然后重新安装 IDLE,但没有成功。
问题是更新版本的 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 节,编码声明,则可能对初学者更有帮助
此错误是 2.x 特有的,因为在 Python3 中,在没有编码声明的情况下默认使用 utf-8。
打开闲置。
选项
配置空闲
一般
设置 'Default Source Encoding' : UTF-8
我是 运行 Python 2.7.12 Windows 10 和 Ubuntu 16.04 这解决了我的 save/crash IDLE 问题 OS的。
为什么我觉得他们想把我们赶走 Python 2 比 3?! jk.
我 运行 在基于 OS 的 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
Picture of my terminal with the error
我已经尝试重新启动 VB,我已经卸载、自动清理,然后重新安装 IDLE,但没有成功。
问题是更新版本的 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 节,编码声明,则可能对初学者更有帮助
此错误是 2.x 特有的,因为在 Python3 中,在没有编码声明的情况下默认使用 utf-8。
打开闲置。
选项
配置空闲
一般
设置 'Default Source Encoding' : UTF-8
我是 运行 Python 2.7.12 Windows 10 和 Ubuntu 16.04 这解决了我的 save/crash IDLE 问题 OS的。
为什么我觉得他们想把我们赶走 Python 2 比 3?! jk.