1

Richtext Ctrl に文字列 (html 形式) を表示しようとしています。私のコードでは、このように使用しようとしました (self.txtmain は RichTextCtrl です):

out = StringIO()
htmlhandler = rt.RichTextHTMLHandler()
buffer = self.txtmain.GetBuffer()
buffer.AddHandler(htmlhandler)
out.write(string)
out.seek(0)
htmlhandler.LoadStream(buffer, out)
self.txtmain.Refresh()

エラーは発生しませんが、RichTextCtrl ウィンドウは更新されません。ここで何が欠けていますか?

4

1 に答える 1

0

ウィンドウ/ウィジェットを更新するには、「wx.Layout()」を参照してください。

場合によっては、アイテムを追加した後、「wx.Layout()」を使用してウィンドウ全体を再描画します

たとえば、あるウィジェットを非表示にして別のウィジェットを同じ場所に表示すると...

この場合は、self.txtmain.Refresh() の後、self.Layout() です。

out = StringIO()
htmlhandler = rt.RichTextHTMLHandler()
buffer = self.txtmain.GetBuffer()
buffer.AddHandler(htmlhandler)
out.write(string)
out.seek(0)
htmlhandler.LoadStream(buffer, out)
self.txtmain.Refresh()
self.Layout()

しかし、あなたの場合にうまくいくかどうかはわかりません...

StringIO() からコンテンツを取得するには、getvalue() を使用する必要があります

htmlhandler.LoadStream(buffer, out)

  htmlhandler.LoadStream(buffer, out.getvalue())
于 2010-06-12T21:00:25.530 に答える