2010-06-08 4 views
1

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

+0

результатом проверки 'htmlhandler.LoadStream (буфер, из)', ложь означает, что не удалось (не то, что я знал, почему, по-прежнему работает над этим) –

ответ

0

Взгляните в «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() должен использование ПолучитьЗначение()

htmlhandler.LoadStream(buffer, out) 

в

htmlhandler.LoadStream(buffer, out.getvalue()) 
+0

Изменено to out.getvalue(), но теперь у меня есть «TypeError: ожидаемый файл wx.InputStream или файл типа Python». – wxpydon