我正在尝试将 sys.stdout 流重定向到 wx.TextCtrl 小部件。我已经设法让流重定向,但显然有些消息被写了两次。希望有人可以向我解释这一点。
我正在使用带有 wx 2.8.12.1 的 python 2.7.5,从 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()