ツリー コントロールと wxRichTextctrl に表示されるデータを持つツリー内の各項目を持つプログラムを作成しています。ctrl から xml データを取得する方法はわかりましたが、これを ctrl に表示する方法がわかりません。setvalue() を設定したときと同様に、xml をそのまま表示します。ファイルからの読み込みは有効なオプションではありません。各レコード (xml に保存されている) を読み込む辞書があるためです。いくつかのサンプルコードで私を助けていただければ幸いです。
1 に答える
1
をバイパスするには、ベースクラスRichTextCtrl.LoadFile()
の1つを作成し、そのメソッドを使用してRichTextCtrlバッファーに直接書き込む必要があります。RichTextFileHandler
LoadStream()
- RichTextPlainTextHandler
- RichTextHTMLHandler
- RichTextXMLHandler
例えば:
from cStringIO import StringIO
# initialize a string stream with XML data
stream = StringIO( myXmlString )
# create an XML handler
handler = wx.richtext.RichTextXMLHandler()
# load the stream into the control's buffer
handler.LoadStream( myRichTextCtrl.GetBuffer(), stream )
# refresh the control
myRichTextCtrl.Refresh()
そしてRichTextCtrl
、特定の形式での内容を取得するには:
stream = StringIO()
handler = wx.richtext.RichTextHTMLHandler()
handler.SaveStream( myRichTextCtrl.GetBuffer(), stream )
print stream.getvalue()
または、バッファを介してストリームを直接ロードすることもできます。データを解釈するには、適切なハンドラーがすでに存在している必要があることに注意してください。
# add the handler (where you create the control)
myRichTextCtrl.GetBuffer().AddHandler(wx.richtext.RichTextXMLHandler())
stream = StringIO( myXmlString )
buffer = self.myRichTextCtrl.GetBuffer()
# you have to specify the type of data to load and the control
# must already have an instance of the handler to parse it
buffer.LoadStream(stream, wx.richtext.RICHTEXT_TYPE_XML)
myRichTextCtrl.Refresh()
于 2012-12-24T21:32:51.570 に答える