我试图将sys.stdout流重定向到wx.TextCtrl小部件。我设法让流重定向,但显然有些消息会被写入两次。希望有人可以向我解释一下。
我使用python 2.7.5和wx 2.8.12.1,从IPython 1.1.0运行。
import sys
import wx
class Example(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, 1, title='Example', size=(500, 500))
console = Console(self)
sys.stdout = console
# Restore default stdout stream
def __del__(self):
Destroy()
def Destroy(self):
sys.stdout = sys.__stdout__
class Console(wx.TextCtrl):
def __init__(self, parent):
self.txtctrl = wx.TextCtrl(parent, style=wx.TE_MULTILINE | wx.TE_AUTO_SCROLL | wx.TE_RICH2)
def write(self, message):
self.txtctrl.AppendText('>>> ')
self.txtctrl.AppendText(message)
def main():
app = wx.App()
frame = Example()
frame.Center()
frame.Show()
app.MainLoop()
if __name__ == '__main__':
main()