wxPython - Как я могу отобразить строку в формате html в wx.RichTextCtrl
Я пытаюсь отобразить некоторую строку (в формате HTML) в Richtext Ctrl. В своем коде я попытался использовать его таким образом (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 не обновляются. Что мне здесь не хватает?
1 ответ
Загляните в "wx.Layout()", чтобы обновить окно / виджет.
В некоторых случаях я использую "wx.Layout()", чтобы перерисовать все окно после добавления элемента.
например, когда я прячу один и показываю другой виджет в том же месте...
в этом случае self.Layout(), после self.txtmain.Refresh()..
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())