我有一个tkinter脚本,在IDLE中运行得很好。但是,当我从Windows资源管理器中双击.py文件时,控制台窗口会闪烁半秒然后退出。
我能够在控制台窗口上进行丝网印刷。它说:
...etc.etc...
NameError: global name 'simpledialog' is not defined
simpledialog
是tkinter
中的一个模块,我在我的脚本中使用它。正如我from tkinter import *
所做的那样,没有必要明确写出tkinter.simpledialog
。
它适用于IDLE,为什么不作为.py?
答案 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可能会解决问题