標準出入力をwxTextCtrlにつなぎかえる



標準入出力をファイルにつなぎ換える

ことができるのは、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といったメソッドを追加すれば、

よりにファイルオブジェクトと同等に使えるようになりますが、

すごく・・・面倒です(笑)。

実装の遅延は開発の基本ですね!