脚本在IDLE中工作,但.py文件不起作用

时间:2011-11-29 23:05:41

标签: python tkinter windows-explorer python-idle

我有一个tkinter脚本,在IDLE中运行得很好。但是,当我从Windows资源管理器中双击.py文件时,控制台窗口会闪烁半秒然后退出。

我能够在控制台窗口上进行丝网印刷。它说:

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

simpledialogtkinter中的一个模块,我在我的脚本中使用它。正如我from tkinter import *所做的那样,没有必要明确写出tkinter.simpledialog

它适用于IDLE,为什么不作为.py?

6 个答案:

答案 0 :(得分:6)

IDLE使用Tkinter作为其图形环境。您的代码可能依赖于IDLE本身导入的副作用。如果在没有子进程的情况下使用IDLE,则尤其如此。

使用simpledialog时,from tkinter import *模块无法导入。 尝试将其添加到您的代码中:

import tkinter.simpledialog as simpledialog

答案 1 :(得分:0)

您是否更新了PATH环境变量以便找到Python可执行文件?您可以在此处找到有关如何操作的更多信息 - Using Python on Windows

但是,当你从提示符输入以下命令时,你基本上需要确保显示包含python.exe的文件夹(例如C:\ Python32):

echo %PATH%

答案 2 :(得分:0)

我使用Tkinter的一个脚本遇到了完全相同的问题。 添加对mainloop()的调用修复了该问题。 请参阅本教程中的示例:[http://sebsauvage.net/python/gui/#import 1

在我的情况下,在 init 功能中我有

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

init 的末尾我添加了:

        win.mainloop()

现在只需运行该文件即可。 希望这有帮助

答案 3 :(得分:0)

我刚才在python的第一周就遇到了类似的麻烦。但是我用一个简单的早期测试脚本朦胧地想起了一个类似的问题,并认为麻烦就是#comments。 所以我尝试使用我的Tkinter注入.py脚本。正如你所说,它在IDLE中运行良好,然后在窗口中单击时才会闪烁。但是文件顶部有几条#注释行。

我把它们全部拿出来,它现在直接在窗户上没有汗水。看看..#。

抱歉,似乎无法删除此帖子。现在文件包含#comments。不知道那是怎么回事。 ..

答案 4 :(得分:0)

我发现将可执行py文件更改为file.pyw修复了问题。这告诉python使用pythonw.exe执行它,pythonw.exe在后台没有终端/控制台的情况下运行脚本。

不确定为什么会这样,也许是以前的python安装中的一些搞砸的环境变量。

答案 5 :(得分:0)

将文件扩展名更改为pyw而不是py可能会解决问题