0

所以我正在从头开始编写代码,我只需要放置一个灰色背景的静态文本(不变)。我可以用.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()

`

4

3 回答 3

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()
于 2013-02-21T16:30:03.440 回答
0

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

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

于 2013-02-22T20:36:27.803 回答
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()
于 2013-02-25T20:30:47.937 回答