Пример этого можно найти на http://www.pygtk.org/pygtk2tutorial/sec-ManualMenuExample.html
Он показывает вам, как создать меню, прикрепить его к строке меню, а также прослушать событие нажатия кнопки мыши и вызвать то же самое меню, которое было создано.
Я думаю, это то, что вам нужно.
РЕДАКТИРОВАТЬ: (добавлено дополнительное объяснение, чтобы показать, как реагировать только на события правой кнопки мыши)
Обобщить.
Создайте виджет для прослушивания событий мыши. В данном случае это кнопка.
button = gtk.Button("A Button")
Создать меню
menu = gtk.Menu()
Наполните его пунктами меню
menu_item = gtk.MenuItem("A menu item")
menu.append(menu_item)
menu_item.show()
Заставьте виджет прослушивать события нажатия мыши, прикрепляя к нему меню.
button.connect_object("event", self.button_press, menu)
Затем определите метод, обрабатывающий эти события. Как указано в примере в ссылке, виджет, переданный этому методу, - это меню, которое вы хотите вывести, а не виджет, который отслеживает эти события.
def button_press(self, widget, event):
if event.type == gtk.gdk.BUTTON_PRESS and event.button == 3:
#make widget popup
widget.popup(None, None, None, event.button, event.time)
pass
Вы увидите, что оператор if проверяет, была ли нажата кнопка, если это правда, он затем проверяет, какая из кнопок была нажата. Event.button - это целочисленное значение, представляющее, какая кнопка мыши была нажата. Итак, 1 - левая кнопка, 2 - средняя и 3 - правая кнопка мыши. Проверяя, установлено ли для event.button значение 3, вы отвечаете только на события нажатия правой кнопки мыши.
person
James Hurford
schedule
07.07.2011