【发布时间】:2011-02-15 07:31:51
【问题描述】:
我最近回到了一个不得不停止大约 6 个月的项目,在重新安装我的操作系统并回到它之后,我遇到了各种疯狂的事情。我确保安装了与我之前使用的相同版本(2.6)的 python。
它首先给我一个奇怪的 tkinter 错误,我以前没有遇到过问题,程序相对简单,我退出时留下的 2 或 3 个错误,我已经记录并且与界面无关.
即使在我删除了有问题的代码部分后仍会弹出相同的错误,事情变得更加奇怪。事实上,回溯指向了它所引用的模块中甚至不存在的行,例如:当模块只有 200 行时,第 262 行。
刚为主模块创建一个全新的文件并复制/粘贴后,它终于意识到有问题的代码已经消失了,我停止收到错误,只是发现我在另一个模块中对代码所做的任何更新都没有当我通过 shell 重新启动程序时出现。 (我没有忘记保存。)在摆弄这个之后,当然,旧的界面错误又回来了,只是在以前工作的不同代码段中。
事实上,如果我恢复到六个月前的文件,程序运行良好。但是,一旦我更改了主模块中的任何内容,界面错误就会回来。
这是原来的错误:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python26\lib\lib-tk\Tkinter.py", line 1410, in __call__
return self.func(*args)
File "C:\PyStuff\interface.py", line 202, in dispOne
__main__.top.destroy()
File "C:\Python26\lib\lib-tk\Tkinter.py", line 1938, in destroy
self.tk.call('destroy', self._w)
TclError: can't invoke "destroy" command: application has been destroyed
我猜这里除了我自己糟糕的编程之外还有其他事情发生。有人有什么想法吗?
编辑:回想起来,我相信我读过一些关于通过 IDLE 的 shell 运行 Tkinter 程序是一个坏主意的东西,至少如果我通过双击启动主模块,TclError 已经消失了.pyc 文件。也许我的问题只是 Chris Atlee 和 Vlad 下面提到的时间戳/PYTHONPATH 问题的结合?
【问题讨论】: