2011-07-28 111 views
4

我有一個我創建的按鈕集合,需要在按下按鈕時更改按鈕的顏色。目前,它設置默認顏色(灰色=無效;淺藍=活性):如何在wxpython中設置切換按鈕的顏色?

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中完成此操作?

+0

我相當有信心,這是OS /主題特定的,你不能控制它,但我不是100%確定的。 –

+0

@ g.d.d.c - 我很害怕,但不確定。 – KronoS

+0

讓我進行一些測試,在我的一個項目的一部分中有幾個ToggleButtons。我會在幾分鐘後更新我的發現。 –

回答

3

它似乎與平臺有關。這在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 
0

SetBackgroundColour()工作我在Windows 7 RGB模式(如(255,255,255))使用的顏色與Python 2.7.3。