等级:初学者
我正在Windows 7操作系统上使用wxPython开发GUI。我对wx.StaticText()
有疑问
我希望wx.StaticText()
字段中的文本有两种不同的颜色。
我怎样才能做到这一点?
例如:如下图所示,我需要两个不同的文本部分才能有两种不同的颜色。
我尝试将文本分成两部分,然后对它们应用不同的颜色,但由于某种原因,第一个文本字段不会出现,只有第二个出现在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。但它还没有回答。
答案 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”的值,确保其宽度足以包含所有字符串。