2010-07-18 60 views
19

我有一個Python程序使用Qt(事實上PyQt4),當我從它的main.py啓動它時,我得到一個控制檯窗口和GUI窗口(當然在Windows上)。使用py2exe隱藏Python GUI應用程序的控制檯窗口

然後我編譯我的程序與py2exe和main.exe被成功創建。但是,如果我運行main.exe(這是程序的用戶將執行的操作),Python的控制檯窗口仍然出現,並且我的所有調試文本都標準輸出到該窗口。

我想隱藏cmd行窗口,當我的應用程序正在運行時,我只需要我的GUI從用戶可見時從.exe文件執行。

這可能嗎?

回答

27

是的,這是可能的。

如果我使用

setup(console=['__main__.py'], options={"py2exe":{"includes":["sip"]}}) 

它創建了一個控制檯應用程序,但是如果我用

setup(windows=['__main__.py'], options={"py2exe":{"includes":["sip"]}}) 

它不會顯示在.exe文件控制檯。但輸出被轉存到.exe文件夾中的main.exe.log文件中。小心。

+2

要抑制輸出,您可以重定向標準輸出,如http://coreygoldberg.blogspot.com/2009/05/python-redirect-or-turn-off-stdout-and.html或其他一些日誌工具。 – ars 2010-07-18 11:33:26

+1

對於我來說,「sip」沒有被識別,但我能夠構建我的exe,並通過使用「setup(windows = ['fileName.py'])」使其工作「 – 2014-10-03 20:56:00

+0

此解決方案對我不起作用。這是我的代碼'setup( options = {'py2exe':{'bundle_files':1,'compressed':True}}, console = [「main.pyw」], zipfile = None, ) – 2014-11-25 21:08:28

6

我懷疑這對py2exe有影響,但它與問題有關。要在沒有終端的情況下在Windows上運行python GUI,請使用pythonw.exe而不是python.exe。如果您使用「.pyw」結束文件名,這應該會自動發生。

2

這可能與您的問題沒有直接關係,但我認爲這值得嘗試。

您可以輕鬆地在以下代碼中使用PyInstaller。

pyinstaller -w myscript.py 

就這麼簡單,每一件事情都解決了。

相關問題