脚本在IDLE中正常,但.py文件不工作

8 投票
6 回答
8322 浏览
提问于 2025-04-17 07:21

我有一个用tkinter写的脚本,在IDLE里运行得很好。但是,当我从Windows资源管理器双击.py文件时,控制台窗口闪了一下就关掉了。

我能截屏这个控制台窗口,里面写着:

...etc.etc...
NameError: global name 'simpledialog' is not defined

simpledialog是tkinter里的一个模块,我在我的脚本中用到了它。因为我用的是from tkinter import *,所以不需要特别写tkinter.simpledialog

在IDLE里能运行,为什么直接运行.py文件就不行呢?

6 个回答

0

我在使用Tkinter的一个脚本时也遇到了完全相同的问题。添加对mainloop()的调用解决了这个问题。你可以看看这个教程,里面有个例子:[http://sebsauvage.net/python/gui/#import1

在我的情况下,在init函数里,我有

def __init__(self,Width=400, Height=400):
        # Create GUI window ------------------------------            
        win = Tk()
        ...

init的最后,我添加了:

        win.mainloop()

现在只需运行这个文件,它就能正常工作了。希望这对你有帮助。

0

你有没有更新你的PATH环境变量,以便能找到你的Python可执行文件?你可以在这里找到更多信息 - 在Windows上使用Python

简单来说,你需要确保包含python.exe的文件夹(比如C:\Python32)在你从命令提示符输入以下命令时能被找到:

echo %PATH%
6

IDLE使用Tkinter作为它的图形界面。如果你在写的代码中遇到问题,可能是因为IDLE自己在导入某些东西时产生了副作用。这种情况在你没有使用子进程的情况下尤其常见。

当你使用from tkinter import *时,simpledialog模块不会被导入。试着在你的代码中添加以下内容:

import tkinter.simpledialog as simpledialog

撰写回答