IDLE 2.7.11/12“名称错误:未定义全局名称‘Toplevel’”

2024-05-08 23:31:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我在基于Debian的oraclevb操作系统上运行APT-GET更新。当它运行时,我在IDLE 2.7.12中处理了一些python代码(我用一个终端打开了它)。更新完成后,我尝试保存代码。在我空闲打开的终端中,我遇到了一个错误。上面写着:

root@kali:~# idle

空闲打开,我加载代码,编辑代码,然后单击[文件][保存]

这种情况会发生

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,我已经卸载,自动清理,然后重新安装闲置没有运气。在


Tags: 代码inpyself终端tkinterlibusr
2条回答

问题是IDLE的更新版本中有一个bug。在.../Lib/idlelib/IOBinding.py顶部附近添加以下内容,例如import tkFileDialog之前。在

from Tkinter import *

名称错误发生在显示警告并显示以下消息的函数中:

^{pr2}$

其中<enc>将是一个编码,例如utf-8。在

我突然想到,如果消息指向Python语言参考,第2.1.4节,编码声明,对初学者可能更有帮助

这个bug是2.x特有的,因为在Python3中,utf-8是在没有编码声明的情况下默认使用的。在

打开怠速。
选项
配置空闲
常规
设置“默认源编码”:UTF-8

我在Windows10和Ubuntu16.04上运行Python2.7.12,这解决了我在两个操作系统上的保存/崩溃空闲问题。

为什么我觉得他们想把我们从Python 2到3扔出去?!jk。在

相关问题 更多 >