2010-08-19 52 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)将打印语句发送到控制台窗口,否则它们将被发送到一个小文本框窗口。

相关问题