我有一个tkinter脚本,它在IDLE中运行得很好。但是,当我从Windows资源管理器中双击.py文件时,控制台窗口会闪烁半秒钟,然后退出。
我能够对控制台窗口进行丝网印刷。它说:
...etc.etc...
NameError: global name 'simpledialog' is not defined
simpledialog
是我在脚本中使用的tkinter
中的模块。当我执行from tkinter import *
时,无需显式编写tkinter.simpledialog
。
它在IDLE中起作用,为什么不作为.py?
IDLE使用Tkinter作为其图形环境。您的代码可能依赖于IDLE本身的导入的副作用。如果您使用不带子进程的IDLE,则尤其如此。
使用simpledialog
时,不会导入from tkinter import *
模块。尝试将其添加到您的代码中:
import tkinter.simpledialog as simpledialog
您是否已更新PATH环境变量,以便找到您的Python可执行文件?您可以在此处找到有关如何操作的更多信息-Using Python on Windows
但是您基本上需要确保在提示符下键入以下命令时显示包含python.exe的文件夹(例如C:\ Python32:)>
echo %PATH%
我使用Tkinter的脚本之一遇到了完全相同的问题。将调用添加到mainloop()可以解决此问题。有关示例,请参见本教程:[http://sebsauvage.net/python/gui/#import 1
在我使用python的第一个星期,对我来说,这同样麻烦。但是我模糊地想起了一个简单的早期测试脚本的类似问题,并认为当时的麻烦是#注释。因此,我尝试使用我的Tkinter注入的.py脚本。正如您所说,它在IDLE中运行良好,然后仅在Windows中单击时才闪烁。但是文件顶部有几行带注释的行。
我发现将可执行py文件更改为file.pyw
可以解决此问题。这告诉python使用pythonw.exe执行该脚本,该脚本运行脚本而无需在后台使用终端/控制台。
将文件扩展名更改为pyw而不是py可能解决了问题