我有一个相当简单的GUI(wxPython)应用程序,并且工作得很好。我使用Windows 7.
使用带有pyinstaller
(或-w
或--noconsole
)的--windowed
进行编译并运行它时,我可以看到一个毫秒的控制台窗口然后关闭。 GUI应用程序不会运行
在没有-w的情况下进行编译将生成带有控制台窗口的工作应用程序。
我在这里缺少什么?
答案 0 :(得分:2)
我猜你是在某种程度上启动一个子程序,当Python在没有控制台窗口的情况下运行时会搞砸。我不得不解决与此相关的三个问题:
multiprocessing
模块在生成工作进程时需要set an environment variable。subprocess
模块需要explicitly handle stdin
,stdout
和stderr
,因为没有为要继承的子进程设置标准文件句柄。 答案 1 :(得分:0)
有同样的问题。使用以下函数代替subprocess.Popen()
:
def popen(cmd):
startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
process = subprocess.Popen(cmd, startupinfo=startupinfo, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
return process.stdout.read()
返回类型与您从Popen().communicate()[0]
获得的返回类型相同:)
非常适合我的GUI应用程序。用pyinstaller窗口--noconsole ...