如何在wxpython中设置切换按钮的颜色?

时间:2011-07-28 21:23:29

标签: button colors wxpython togglebutton

我有一个我创建的按钮集合,需要在按下时更改按钮的颜色。目前它设置了默认颜色(灰色=无效;浅蓝色=活动):

enter image description here

但我想将活动颜色更改为红色。

这是我的按钮类:

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.SetColourself.button.SetBackgroundColourself.button.SetForegroundColour所有这些都没有成功。有没有办法在wxpython中完成这个?

2 个答案:

答案 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。