События значков панели задач wxPython не работают должным образом - PullRequest
0 голосов
/ 24 июня 2010

Используя 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, двойной щелчок сработал, но я все еще озадачен, когда это не так в моем случае.

Ответы [ 2 ]

2 голосов
/ 24 июня 2010

Попробуйте удалить () в self.DoSomething().С помощью паренов вы привязываете wx.EVT_TASKBAR_CLICK к тому, что DoSomething () возвращает , что в данном случае равно None.

0 голосов
/ 24 июня 2010

Глядя здесь: http://docs.wxwidgets.org/stable/wx_wxtaskbaricon.html

Вы пробовали LEFT_UP и LEFT_DOWN вместо CLICK?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...