2010-06-24 4 views
0

wxPython을 사용하여 wxPython 데모 코드를 기반으로 작업 표시 줄 아이콘을 만들었습니다. 작업 표시 줄 아이콘을 오른쪽 클릭하면 아이콘 메뉴가 열립니다. 그러나 나는 그것이 왼쪽 클릭에서도 특정 일을하기를 원할 것이다.wxPython 작업 표시 줄 아이콘 이벤트가 예상대로 작동하지 않습니다.

는 다음 코드에서 3 바인딩 라인에서와 같이 EVT_TASKBAR_CLICK 이벤트를 수신하여이를 구현 시도했다 :

class TrayIcon(wx.TaskBarIcon): 
    ... 
    def __init__(self, frame): 
     ... 
     self.Bind(wx.EVT_MENU, self.OnLoanUpdate, id=self.TBMENU_UPDATE) 
     self.Bind(wx.EVT_MENU, self.OnTaskBarClose, id=self.TBMENU_CLOSE) 
     self.Bind(wx.EVT_TASKBAR_CLICK, self.DoSomething()) 
     ... 
    def DoSomething(self): 
     print "do it" 

class MainWindow(wx.Frame): 
    def __init__(self, parent, title): 
     wx.Frame.__init__(self, parent, title=title, size=(200, 100)) 
     ... 
     self.tbicon = TrayIcon(self) 
     self.Show(True) 
    ... 

그러나, DoSomething() 방법은 내 작업 표시 줄 아이콘의 초기화시 실행됩니다. 그리고 예상대로 왼쪽 (또는 오른쪽) 클릭시 해고 당하지 않습니다. 사실, 다른 이벤트 (예 : EVT_CLOSE 또는 EVT_MENU_HIGHLIGHT)를 사용하더라도 문제는 완전히 동일합니다.

Windows 7에서 테스트 중입니다. 무엇이 잘못 되었나요?

편집 : 나는 this code을 시도하고 MainWindow를 클래스에서 이벤트를 구현, 더블 클릭은 일을하지만 내 경우에는하지 않을 때 나는 아직도 의아해하고있다.

답변

2

()self.DoSomething()에서 삭제 해보세요. 괄호를 사용하면 DoSomething() (이 경우 없음)을 반환하는 모든 것에 wx.EVT_TASKBAR_CLICK을 바인딩합니다.

+0

네, 다른 두 개의 Bind() 메소드에서 parens이 없다는 사실을 간과했습니다! (완전히 수정하려면 DoSomething 메서드에도 추가 evt 매개 변수를 추가해야했습니다.) – Rabarberski

관련 문제