標準入出力をファイルにつなぎ換える
ことができるのは、Pythonの便利な点の一つですが、
wxTextCtrlにつなぎ換えることも出来ます。
sys.stdoutに代入したり、print >> spam で使えるオブジェクトの条件はただ一つ、
writeメソッドを持つこと。
import sys import wx class TextCtrlIO(object): def __init__(self, textctrl): self.textctrl = textctrl def write(self, ss): self.textctrl.AppendText(ss) def main(): app = wx.PySimpleApp() f = wx.Frame(None, -1) t = wx.TextCtrl(f, -1, style=wx.TE_MULTILINE) f.Show() io = TextCtrlIO(t) for c in open(sys.argv[0]): t.write(c) app.MainLoop() if __name__ == "__main__": main()
ちなみにTextCtrlIOにwriteline・readline・closeといったメソッドを追加すれば、
よりにファイルオブジェクトと同等に使えるようになりますが、
すごく・・・面倒です(笑)。
実装の遅延は開発の基本ですね!