【问题标题】:How to have different colored texts in a wx.StaticText() in wxPython如何在 wxPython 中的 wx.StaticText() 中有不同颜色的文本
【发布时间】:2014-02-03 09:20:28
【问题描述】:

级别:初学者

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

例如:如下图所示,我需要文本的两个不同部分来具有两种不同的颜色。

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

下面给出了代码 sn-p (请注意,我已经根据我的实际代码编辑了下面的代码。我的主要想法是知道我的方法是否可以解决这个问题?我的代码可以正常工作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。但是还没有回答。

【问题讨论】:

  • “text.setforeground”应该是 text1.setforground 吗?
  • @Jerry_Y 是的,编辑了代码。谢谢

标签: python-2.7 wxpython


【解决方案1】:

我相信您的“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”的值,确保其宽度足以容纳所有字符串。

【讨论】:

  • 谢谢,正如我在帖子中已经提到的,我已经尝试过 pos=()。不幸的是,当我使用 pos=() 时,没有出现任何文本。另外,当我在循环中添加面板时,这应该不是问题,因为它可能在使用 pos=() 时在同一点上添加面板
  • 是的,你是对的。我想我发布了一个错误的问题。我的实际问题是我没有使用绝对定位(在我的程序中,文本、面板等是由程序本身自动添加的。)所以,文本重叠了。我终于想出了一个解决方案。我必须使用sizer,然后将这两个不同的文本添加到sizer等等......无论如何,谢谢。 :)
猜你喜欢
  • 2011-05-24
  • 2013-12-03
  • 2012-08-15
  • 1970-01-01
  • 2012-05-10
  • 1970-01-01
  • 2010-12-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多