我有一个我创建的按钮集合,需要在按下时更改按钮的颜色。目前它设置了默认颜色(灰色=无效;浅蓝色=活动):
但我想将活动颜色更改为红色。
这是我的按钮类:
class ButtonClass(wx.Panel):
def __init__(self, parent, name, id):
wx.Panel.__init__(self, parent)
self.name = name
self.taskid = id
self.button = wx.ToggleButton(self, 1, size=(50, 50))
self.button.SetLabel('Start')
self.mainSizer = wx.BoxSizer(wx.HORIZONTAL)
self.mainSizer.Add(self.button)
self.Bind(wx.EVT_TOGGLEBUTTON, self.toggledbutton, self.button)
# Where the buttons change state
def toggledbutton(self, event):
# Active State
if self.button.GetValue() == True:
self.button.SetLabel('Stop')
# Inactive State
if self.button.GetValue() == False:
self.button.SetLabel('Start')
我尝试过使用self.button.SetColour
,self.button.SetBackgroundColour
,self.button.SetForegroundColour
所有这些都没有成功。有没有办法在wxpython中完成这个?
答案 0 :(得分:4)
它似乎与平台有关。这在Ubuntu中适用于我,但不适用于Windows。
self.ToggleButtonObj = wx.ToggleButton(self, -1, 'ButtonLabel')
self.ToggleButtonObj.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleClick)
def OnToggleClick(self,event):
if self.ToggleButtonObj.GetValue():
self.ToggleButtonObj.SetBackgroundColour('#color1')
else:
self.ToggleButtonObj.SetBackgroundColour('#color2')
解决方法:
self.Button = wx.Button(self, -1, 'ButtonLabel')
self.Button.Bind(wx.EVT_BUTTON, self.OnToggleClick)
self.ButtonValue = False
def OnToggleClick(self,event):
if not self.ButtonValue():
self.Button.SetBackgroundColour('#color1')
self.ButtonValue = True
else:
self.Button.SetBackgroundColour('#color2')
self.ButtonValue = False
答案 1 :(得分:0)
SetBackgroundColour()为我使用RGB模式中的颜色(如(255,255,255))在Windows 7中使用python 2.7.3。