脚本在IDLE中有效,但.py-file不起作用

问题描述 投票:8回答:6

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

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

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

simpledialog是我在脚本中使用的tkinter中的模块。当我执行from tkinter import *时,无需显式编写tkinter.simpledialog

它在IDLE中起作用,为什么不作为.py?

python tkinter windows-explorer python-idle
6个回答
6
投票

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

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

import tkinter.simpledialog as simpledialog

0
投票

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

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

echo %PATH%

0
投票

我使用Tkinter的脚本之一遇到了完全相同的问题。将调用添加到mainloop()可以解决此问题。有关示例,请参见本教程:[http://sebsauvage.net/python/gui/#import 1


0
投票

在我使用python的第一个星期,对我来说,这同样麻烦。但是我模糊地想起了一个简单的早期测试脚本的类似问题,并认为当时的麻烦是#注释。因此,我尝试使用我的Tkinter注入的.py脚本。正如您所说,它在IDLE中运行良好,然后仅在Windows中单击时才闪烁。但是文件顶部有几行带注释的行。


0
投票

我发现将可执行py文件更改为file.pyw可以解决此问题。这告诉python使用pythonw.exe执行该脚本,该脚本运行脚本而无需在后台使用终端/控制台。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.