如何在StaticText中用不同颜色着色文本?

1 投票
3 回答
6532 浏览
提问于 2025-04-16 08:25

在wxpython中,能不能让一个静态文本框里的文字用不同的颜色显示呢?我知道可以像这样改变整个静态文本框的文字颜色:

text = wx.StaticText(panel, -1, 'random text')
text.SetForegroundColour('blue')

但是我想要让里面的某些文字用不同的颜色,比如“random”用红色,“text”用蓝色。有没有什么办法可以做到?或者有没有其他的控件可以使用呢?

3 个回答

0

可能来得有点晚,但希望能帮到某些人。

根据你使用的平台,你可以用一个叫 SetLabelMarkup 的方法,这个方法可以让你使用类似HTML的标签。它在Windows上不支持,但在某些Linux版本上可以用。

举个例子,如果你想要一段双色的文字,你可以这样写:

text.SetLabelMarkup('<span foreground=\'red\'>Hello, </span><span foreground=\'blue\'>World</span>

你可以在这里找到相关文档。

图片:在Raspbian上的效果

0

这应该能帮到你。

text.SetForegroundColour((255,0,0)) # set text color
text.SetBackgroundColour((0,0,255)) # set text back color

*颜色是用RGB格式表示的。你可以在这里找到它们的列表。把我写的数字换成你想要的颜色就可以了。

1

wx.StaticText这个控件不支持你想要的那种功能。你可以考虑使用StyledText控件中的一个,RichText控件也可能适合你的需求。

撰写回答