В моих постоянных усилиях узнать больше о python я пытаюсь добавить событие щелчка правой кнопкой мыши в свою программу управления mp3. Что в настоящее время работает, так это то, что он показывает меню и все параметры. Что не работает, так это то, что функции, выбранные из меню, не выполняются, как я думаю, должны быть. Большая часть этого кода была взята из инструкции на другом сайте.
Вот параметры меню правой кнопки мыши
menu_titles = ["Remove Selection from list",
"Delete Selection from system",
"Move Selection",
"Copy Selection",
"Print Selection"]
menu_title_by_id = {}
for title in menu_titles:
menu_title_by_id[ wxNewId() ] = title
Код, который запускается, когда происходит событие правого клика
def RightClickCb( self, event ):
# record what was clicked
self.list_item_clicked = right_click_context = event.GetText()
### 2. Launcher creates wxMenu. ###
menu = wxMenu()
for (id,title) in menu_title_by_id.items():
### 3. Launcher packs menu with Append. ###
menu.Append( id, title )
### 4. Launcher registers menu handlers with EVT_MENU, on the menu. ###
EVT_MENU( menu, id, self.MenuSelectionCb )
### 5. Launcher displays menu with call to PopupMenu, invoked on the source component, passing event's GetPoint. ###
self.MainPanel.PopupMenu( menu, event.GetPoint() )
menu.Destroy() # destroy to avoid mem leak
def MenuSelectionCb( self, event ):
# do something
operation = menu_title_by_id[ event.GetId() ]
target = self.list_item_clicked
print 'Perform "%(operation)s" on "%(target)s."' % vars()
То, что я ожидаю получить, когда я щелкаю правой кнопкой мыши, а затем выбираю один из параметров в меню, - это вывод
Perform "Print Selection" on "<data about the selection here>"
Я получаю
Perform "Print Selection" on "."
Как мне получить данные из элемента, который я выбрал как часть события правого клика?