wxPython - 如何在 wx.RichTextCtrl 中显示 html 格式的字符串

发布于 2024-09-05 11:12:33 字数 379 浏览 1 评论 0原文

我正在尝试在 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 窗口不会更新。 我在这里缺少什么?

I'm trying to display some string (html formatted) in a Richtext Ctrl. In my code I tried to use it this way (self.txtmain is the 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()

No errors are issued, but the RichTextCtrl windows is not updated.
What am I missing here?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

尘曦 2024-09-12 11:12:36

查看“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())

Take a look in "wx.Layout()", to update window/widget.

In certain cases i use "wx.Layout()" to redraw entire window, after add an item

for example, when i hide one and show another widget in same place...

in this case, self.Layout(), after 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()

But, i not sure it'd work in you case...

and to retrieve a content from a StringIO() must use getvalue()

htmlhandler.LoadStream(buffer, out)

to

  htmlhandler.LoadStream(buffer, out.getvalue())
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文