所以我从头开始编写一个代码,而且我要处理一个带有灰色背景的静态文本(不变)。我可以使用.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()
`
答案 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()