2010-08-19 55 views
1
#!/usr/bin/python 

import wx 
import os 
import sys 

class MyFrame(wx.Frame): 
    def __init__(self, parent, id, title): 
     wx.Frame.__init__(self, parent, id, title, size=(480, 400)) 
     self.panel = MyPanel(self, -1) 
     self.Centre() 
     self.Show(True) 
     setstd() 
     print 'test' 
     """ 
     syncall() 
     """ 

class MyPanel(wx.Panel): 
    def __init__(self, parent, id): 
     wx.Panel.__init__(self, parent, id) 
     self.text = wx.StaticText(self, -1, '', (40, 60)) 

class MyText(): 
    def write(string): 
     label = frame.panel.text.GetLabel() 
     frame.panel.text.SetLabel(string) 

def setstd(): 
    sys.stdout = MyText() 
    sys.stderr = MyText() 

app = wx.App() 
frame = MyFrame(None, -1, 'DropBox log') 
app.MainLoop() 

在不打印「測試」,它甚至可以運行,但與打印「測試」,它不運行也不重定向輸出。重定向標準輸出在GUI將消息打印,而不是終端

如何將標準輸出重定向到gui而不是終端打印消息?

+0

請修正您的setstd縮進()。我很確定我知道你的意思,但縮進在Python中很重要。 – robert 2010-08-19 21:40:26

+0

完成,固定縮進 – 2010-08-19 21:49:42

回答

2

當您在wxPython中使用print語句時,它最終取決於您如何調用wx.App()

wx.App(redirect=False)或簡單地wx.App(0)將打印語句發送到控制檯窗口,否則它們將被髮送到一個小文本框窗口。

相關問題