如何在wxPython上控制面板正方形的背景颜色?

时间:2013-02-21 15:30:51

标签: wxpython

所以我从头开始编写一个代码,而且我要处理一个带有灰色背景的静态文本(不变)。我可以使用.ForegroundColour更改字体,但不能使用BackgroundColour

更改字体

这是代码

s_text2 = wx.StaticText(self.panel1, -1, "\n\n\nStop\n\n\n", (x1size+30,10)) 
s_text2.SetBackgroundColour('grey')

有什么想法吗?

是的,这是一个简短的点样本

import wx

class Prototype(wx.Frame):
     def __init__(self, parent, title):
        wx.Frame.__init__(self, None, size=(550,300))

        self.InitUI()
        self.Centre()
        self.Show()
    #define User Interface
    def InitUI(self):
        self.panel1 = wx.Panel(self, -1)
        self.sizer = wx.BoxSizer() #Main window sizer
        self.sizer.Add(self.panel1, 1, flag=wx.EXPAND)

        self.hbox = wx.BoxSizer(wx.HORIZONTAL)
        self.panel1.SetSizer(self.hbox)

        #Static Text
        s_text1 = wx.StaticText(self.panel1, -1, "Hello World!", (10,5)) #top text
        self.s_text2 = wx.StaticText(self.panel1, -1, "\n\n\nStop\n\n\n", (300,10)) #top text
        self.s_text2.SetBackgroundColour("blue")
if __name__ == '__main__':
    app = wx.App()
    Prototype(None, title='')
    app.MainLoop()

`

3 个答案:

答案 0 :(得分:1)

这对我有用:

import wx

class MainWindow(wx.Frame):
    def __init__(self, *args, **kwargs):
        wx.Frame.__init__(self, *args, **kwargs)

        self.panel = wx.Panel(self)
        self.text = wx.StaticText(self.panel, label="Test")
        self.text.SetBackgroundColour("gray")
        self.text.SetForegroundColour(wx.WHITE)

        self.sizer = wx.BoxSizer()
        self.sizer.Add(self.text)

        self.panel.SetSizerAndFit(self.sizer)  
        self.Show()

app = wx.App(False)
win = MainWindow(None)
app.MainLoop()

答案 1 :(得分:0)

如果您使用的是wxGTK端口,则静态文本可能无法具有背景颜色,因为它们不是真正的小部件。相反,它们只是直接在父级上绘制,而活动主题可以对是否使用背景颜色产生一些影响。

wx.lib.stattext中有一个通用类,它是一个真正的小部件,因此您可以使用它。

答案 2 :(得分:0)

我刚刚解决了这个问题,无论如何,他们都在尝试

import wx

class Prototype(wx.Frame):
    def __init__(self, parent, title):
        wx.Frame.__init__(self, None, size=(550,300))

        self.InitUI()
        self.Centre()
        self.Show()
    #define User Interface
    def InitUI(self):
        self.panel1 = wx.Panel(self, -1)

        #Static Text
        s_text1 = wx.StaticText(self.panel1, -1, "Hello World!", (10,5)) #top text
        self.s_text2 = wx.TextCtrl(self.panel1, style=wx.TE_READONLY | wx.NO_BORDER, pos=(300,10)) #top text
        self.s_text2.AppendText("gray")
        self.s_text2.SetBackgroundColour("gray")
if __name__ == '__main__':
    app = wx.App()
    Prototype(None, title='')
    app.MainLoop()