如何在wxPython中的wx.StaticText()中使用不同的彩色文本

时间:2014-02-03 09:20:29

标签: python-2.7 wxpython

等级:初学者

我正在Windows 7操作系统上使用wxPython开发GUI。我对wx.StaticText()有疑问 我希望wx.StaticText()字段中的文本有两种不同的颜色。 我怎样才能做到这一点?

例如:如下图所示,我需要两个不同的文本部分才能有两种不同的颜色。 enter image description here

我尝试将文本分成两部分,然后对它们应用不同的颜色,但由于某种原因,第一个文本字段不会出现,只有第二个出现在GUI中。我甚至尝试在pos=()中使用wx.StaticText()和其他选项,但没有任何效果。 在我的代码中,我在循环中创建面板,然后在循环内部创建wx.StaticText()字段并将它们添加到面板中。循环完成后,这些面板最终会添加到BoxSizer中。

下面给出了代码片段(请注意,我已经从我的实际代码中编辑了下面的代码。我的主要想法是知道我的方法是否能解决这个问题?我的代码适用于一个wx。 StaticText字段,以相同的颜色打印面板中的值。):

k = 0
sizer = wx.BoxSizer(wx.VERTICAL)
for i in locations: #locations is defined in other part of the code
    lPanels = 'lPanel'+str(k)
    lPanels = wx.Panel(panel2, size=(screenWidth,50))
    #panel2 and screenWidth are defined in other part of code.
    label0 = str(k+1)+ '. '
    label1 = locations[k]
    text0 = wx.StaticText(lPanels, -1, label0)
    text0.SetForegroundColour('#ffffff')
    text1 = wx.StaticText(lPanels, -1, label1)
    text1.SetForegroundColour('#000001')
    sizer.Add(lPanels, 0, wx.ALL, 5)
    k += 1
panel2.SetSizer(sizer)

有没有更好的方法来解决这个问题?有人可以提供一个小例子吗?谢谢。 PS:有一个类似的旧问题here。但它还没有回答。

1 个答案:

答案 0 :(得分:2)

我相信你的“text1”重叠“text0”,这就是为什么“第一个文本字段不会出现,只有第二个出现在GUI中”,正如你所说的那样

请试试这个:

    text0 = wx.StaticText(lPanels, -1, label0, pos=(0,0))
    text0.SetForegroundColour('BLACK')
    text1 = wx.StaticText(lPanels, -1, label1, pos=(50,0))
    text1.SetForegroundColour('BLUE')

编辑:

请检查“screenWidth”的值,确保其宽度足以包含所有字符串。

enter image description here