1

ツリー コントロールと wxRichTextctrl に表示されるデータを持つツリー内の各項目を持つプログラムを作成しています。ctrl から xml データを取得する方法はわかりましたが、これを ctrl に表示する方法がわかりません。setvalue() を設定したときと同様に、xml をそのまま表示します。ファイルからの読み込みは有効なオプションではありません。各レコード (xml に保存されている) を読み込む辞書があるためです。いくつかのサンプルコードで私を助けていただければ幸いです。

4

1 に答える 1

1

をバイパスするには、ベースクラスRichTextCtrl.LoadFile()の1つを作成し、そのメソッドを使用してRichTextCtrlバッファーに直接書き込む必要があります。RichTextFileHandlerLoadStream()

  • 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 に答える