2013-11-18 3 views
0

wxpython 도구 모음에 몇 개의 아이콘 (예 : 연결, 재생, 저장 등)이 있습니다. 연결 아이콘을 전환하고 싶습니다.wxpython 도구 모음 버튼 전환

연결되면 연결 비트 맵이 연결 끊기로 바뀌고 반대의 경우도 마찬가지입니다. 툴바에서이 동작을 수행하기 위해 wxpython에서 사용할 수있는 준비가 된 메소드가 있습니까? 내가 사용하고있는 다른 방법은 연결과 연결 끊기를 모두 표시하고 작업에 따라 사용/사용하지 않도록 설정하지만 너무 많은 아이콘이 있습니다. 토글 링으로 일부 공간을 절약하고 싶습니다.

답변

3

일반 wx.ToggleButton을 사용하면 ' 토글 이벤트 핸들러의 아이콘을 변경하려는 것이다 :

import wx 

######################################################################## 
class MyPanel(wx.Panel): 
    """""" 

    #---------------------------------------------------------------------- 
    def __init__(self, parent): 
     """Constructor""" 
     wx.Panel.__init__(self, parent) 

     self.save_ico = wx.ArtProvider.GetBitmap(wx.ART_FILE_SAVE, wx.ART_TOOLBAR, (16,16)) 
     self.print_ico = wx.ArtProvider.GetBitmap(wx.ART_PRINT, wx.ART_TOOLBAR, (16,16)) 

     self.toggleBtn = wx.ToggleButton(self) 
     self.toggleBtn.SetBitmap(self.save_ico) 
     self.toggleBtn.Bind(wx.EVT_TOGGLEBUTTON, self.onToggle) 

    #---------------------------------------------------------------------- 
    def onToggle(self, event): 
     """""" 
     btn = event.GetEventObject() 
     if btn.GetValue(): 
      self.toggleBtn.SetBitmap(self.print_ico) 
     else: 
      self.toggleBtn.SetBitmap(self.save_ico) 


######################################################################## 
class MyFrame(wx.Frame): 
    """""" 

    #---------------------------------------------------------------------- 
    def __init__(self): 
     """Constructor""" 
     wx.Frame.__init__(self, None, title="Toggle buttons") 
     panel = MyPanel(self) 
     self.Show() 


#---------------------------------------------------------------------- 
if __name__ == "__main__": 
    app = wx.App(False) 
    frame = MyFrame() 
    app.MainLoop() 

당신이 당신이 SetBitmapSelected() 메소드를 사용할 수 ToggleButton을의 일반 버전을 사용하는 경우. wx.lib.buttons에서 일반 버전을 찾을 수 있습니다. 이 예제는 wxPython 데모 패키지에서 볼 수 있습니다.

이상하게도 SetBitmapSelected()는 wxPython 2.9에서 시작하는 일반 ToggleButton에 대해 표시되지만 동일한 방식으로 작동하지 않습니다. 단추를 누를 때만 대체 이미지를 볼 수 있지만 단추를 놓으면 되돌아갑니다.