2010-08-19 4 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() 

'test'가 인쇄되지 않으면 실행되기도하지만 'test'라는 인쇄물을 사용하면 출력이 실행되거나 리디렉션되지 않습니다.터미널 대신 터미널 gui의 메시지를 출력하도록 표준 출력을 재지향

터미널 대신 gui에서 메시지를 출력하도록 표준 출력을 리디렉션하는 방법은 무엇입니까?

+0

() setstd에 대한 들여 쓰기를 수정하십시오. 나는 당신이 의미하는 바를 알고 있지만 파이썬에서는 들여 쓰기가 중요하다고 확신합니다. – robert

+0

완료 됨, 고정 된 들여 쓰기 –

답변

2

print 문을 wxPython과 함께 사용하면 결국 wx.App()이라는 호출 방법에 따라 달라집니다.

wx.App(redirect=False) 또는 간단히 wx.App(0)은 콘솔 창에 print 문을 보내고, 그렇지 않으면 작은 텍스트 상자 창으로 보내집니다.