Использование wxPython (я совершенно новичок в этом), я создал значок панели задач на основе демонстрационного кода 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. Что я делаю неправильно?
Edit: Когда я попытался this code и реализовать мероприятия в классе MainWindow, двойной щелчок работал, но я все еще озадачен, когда он не в моем случае.
Да, это сработало, действительно упустило отсутствие парс в двух других методах Bind()! (Чтобы полностью исправить это, мне пришлось добавить дополнительный параметр evt в мой метод DoSomething) – Rabarberski