2009-08-21 55 views

回答

6

其他人已經建議從py重命名爲pyw。 如果您在創建wx.App類時改爲參考Output redirection pass redirect = True。

例如見http://www.wxpython.org/docs/api/wx.App-class.html

__init__簽名是

__init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True)

如果設置redirect=True和文件名非None,sys.stdoutsys.stderr會重定向到文件名。請注意,在Windows和Mac重定向默認值爲True。如果redirect==True and filename is None,輸出將打印在與其他幀不同的彈出窗口中。 這可能非常有用,因此在調試過程中,您可以關注正在發生的事情,而不會在發佈模式下讓應用程序內部的用戶界面混亂。

+1

我不確定在使用GUI運行Python應用程序時如何輸出重定向與打開控制檯窗口有關。你能解釋一下嗎? – 2012-10-18 19:44:06

3

我不知道的wxPython但解決的辦法可能是與使用pythonw.exe運行程序,而不是python.exe一樣簡單。

+0

和類似的,重命名您的文件爲whatever.pyw(而不是whatever.py),以便當您點擊它時,它將啓動pythonw.exe而不是python.exe – Moe 2009-08-21 12:49:02

6

不熟悉wxPython的,但如果你有pythonw.exe而不是python.exe調用你的腳本,不應該出現在控制檯窗口。我相信將腳本保存爲script.pyw也可以。

+0

如果它是.pyw文件並且您的python關聯在Windows中,您只需雙擊該文件即可啓動,無需使用控制檯 – 2009-08-21 09:41:41

+0

我在模塊中擁有所有的GUI代碼,並且我有一個擴展名爲PY的主腳本。我必須將所有文件重命名爲PYW嗎?即使是__init__.py文件? – 2010-05-21 14:13:16

+0

不是,只是「主」腳本。 – AlexJReid 2010-05-25 14:00:39

6

最簡單的方式做到這一點:

if __name__ == "__main__": 
    app = wx.App(0) #<--- or False 
    frame = MyFrame('My Frame') 
    frame.Show(True) 
    app.MainLoop() 

這將打印到標準輸出,而不是wxPython的窗口。

+0

這很好,因爲當應用程序加載wxWindow在屏幕上閃爍時發生錯誤,然後消失,您不會讀取錯誤。當您添加0時,錯誤將打印在控制檯上。 – gath 2012-01-13 12:10:09