Используя wxPython (я новичок в этом), я создал значок панели задач на основе демонстрационного кода wxPython.
Меню значка открывается при щелчке правой кнопкой мыши на значке панели задач. Однако я бы хотел, чтобы он делал что-то конкретное и при щелчке левой кнопкой мыши.
Я пытался реализовать это, слушая событие EVT_TASKBAR_CLICK
, как в 3-й строке Bind в следующем коде:
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.
Что я делаю неправильно?
Редактировать : Когда я попытался этот код и реализовал событие в классе MainWindow, двойной щелчок сработал, но я все еще озадачен, когда это не так в моем случае.