Wxpython 我想知道如何使用wx.gridsizer将文本背景设置为一种颜色

Wxpython 我想知道如何使用wx.gridsizer将文本背景设置为一种颜色,wxpython,Wxpython,有四种颜色的背景附加。 我使用wx.gridsizer设置背景,以便背景仅适用于文本大小。我想有一个作为附加图像的一行彩色线。我该怎么做 必须按wx.gridsizer排序 import wx class test(wx.Frame): def __init__(self): wx.Frame.__init__(self, None) main = wx.Panel(self, style=wx.DEFAULT) a=wx.StaticText(mai

有四种颜色的背景附加。 我使用wx.gridsizer设置背景,以便背景仅适用于文本大小。我想有一个作为附加图像的一行彩色线。我该怎么做

必须按wx.gridsizer排序

import wx
class test(wx.Frame):
   def __init__(self):
      wx.Frame.__init__(self, None)
      main = wx.Panel(self, style=wx.DEFAULT)

      a=wx.StaticText(main, label='111111111')
      a.SetBackgroundColour('red')
      b=wx.StaticText(main, label='222222222')
      b.SetBackgroundColour('blue')
      c=wx.StaticText(main, label='333333333')
      c.SetBackgroundColour('yellow')
      d=wx.StaticText(main, label='444444444')
      d.SetBackgroundColour('cyan')

      sizer = wx.GridSizer(0,4,10,10)
      sizers = (a,b,c,d)

      for i in sizers:
         sizer.Add(i, 1, wx.ALL|wx.EXPAND, 1)
      vbox = wx.BoxSizer(wx.VERTICAL)
      vbox.Add(sizer, wx.SUNKEN_BORDER)
      main.SetSizer(vbox)

if __name__ == '__main__':
    app = wx.App()
    frame = test()
    frame.Show(True)
    app.MainLoop()

尺码器,尺码,他们没有设置背景颜色的方法。
您的问题是您在sizer
sizer=wx.GridSizer(0,4,10,10)
中的项目之间添加了10的
水平间隙

将其更改为
sizer=wx.GridSizer(0,4,10,0)

一些由WXPython(最显著的GTK)支持的平台不考虑WX.STATICE文本作为单独的小部件;相反,标签只是直接绘制在其父窗口上。这些平台不允许开发人员更改小部件的背景颜色。
使用GenStaticText将克服上述所有问题,因为它本身就是一个通用小部件和一个真正的窗口

import wx
import wx.lib.stattext as ST
class test(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None)
        main = wx.Panel(self,-1)
        a=ST.GenStaticText(main, label='111111111', size=(100,-1))
        b=ST.GenStaticText(main, label='222222222', size=(100,-1))
        c=ST.GenStaticText(main, label='3333', size=(100,-1))
        d=ST.GenStaticText(main, label='444444444', size=(100,-1))
        sizer = wx.GridSizer(0,4,10,0)
        sizers = (a,b,c,d)
        for i in sizers:
            i.SetBackgroundColour(wx.RED)
            sizer.Add(i, 1, wx.ALL|wx.EXPAND)
        vbox = wx.BoxSizer(wx.VERTICAL)
        vbox.Add(sizer, wx.SUNKEN_BORDER)
        main.SetSizer(vbox)

if __name__ == '__main__':
    app = wx.App()
    frame = test()
    frame.Show(True)
    app.MainLoop()
请注意,我为每个静态文本指定了一个
大小
,这确保了文本的长度不会覆盖sizer所做的决定,并保持一致


尺码器,尺码,他们没有设置背景颜色的方法。
您的问题是您在sizer
sizer=wx.GridSizer(0,4,10,10)
中的项目之间添加了10的
水平间隙

将其更改为
sizer=wx.GridSizer(0,4,10,0)

一些由WXPython(最显著的GTK)支持的平台不考虑WX.STATICE文本作为单独的小部件;相反,标签只是直接绘制在其父窗口上。这些平台不允许开发人员更改小部件的背景颜色。
使用GenStaticText将克服上述所有问题,因为它本身就是一个通用小部件和一个真正的窗口

import wx
import wx.lib.stattext as ST
class test(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None)
        main = wx.Panel(self,-1)
        a=ST.GenStaticText(main, label='111111111', size=(100,-1))
        b=ST.GenStaticText(main, label='222222222', size=(100,-1))
        c=ST.GenStaticText(main, label='3333', size=(100,-1))
        d=ST.GenStaticText(main, label='444444444', size=(100,-1))
        sizer = wx.GridSizer(0,4,10,0)
        sizers = (a,b,c,d)
        for i in sizers:
            i.SetBackgroundColour(wx.RED)
            sizer.Add(i, 1, wx.ALL|wx.EXPAND)
        vbox = wx.BoxSizer(wx.VERTICAL)
        vbox.Add(sizer, wx.SUNKEN_BORDER)
        main.SetSizer(vbox)

if __name__ == '__main__':
    app = wx.App()
    frame = test()
    frame.Show(True)
    app.MainLoop()
请注意,我为每个静态文本指定了一个
大小
,这确保了文本的长度不会覆盖sizer所做的决定,并保持一致


我使用的是
GenStaticText
,所以在Windows中背景也是透明的!?感谢您成为我最想要的功能之一。我使用了
GenStaticText
,因此Windows中的背景也是透明的!?谢谢你成为我最想要的功能之一。