2010-12-31 8 views

ответ

4

Это очень легко, просто слушать сигнал «Кнопка-пресс-событие» и использовать treeview.get_path_at_pos() понять выбранную строку:

def button_press_event(treeview, event): 
    if event.button == 3: # right click 
     model, path = treeview.get_path_at_pos(int(event.x), int(event.y)) 
     # do something with the selected path 

treeview.connect('button-press-event' , button_press_event) 
+0

См. Также: [Глава 16: Меню] (http://python-gtk-3-tutorial.readthedocs.org/en/latest/menus.html) из учебника Python Gtk + 3.0. – phineas

+1

Возможно, это GTK2 vs GTK3, но, согласно [pygtk 2 doc] (http://www.pygtk.org/pygtk2reference/class-gtktreeview.html#method-gtktreeview--get-path-at-pos), это должно быть что-то вроде 'путь, столбец, __, __ = treeview.get_path_at_pos (int (event.x), int (event.y))' – Zvika

+0

Остерегайтесь: вам не обязательно нужно «button-press-event», если только ваша цель чтобы показать всплывающее меню. Если, например, вы хотите просто выполнить какое-либо действие по нажатой строке, вам понадобится «button-release-событие». Это гарантирует, что при щелчке правой кнопкой мыши по новой строке она будет выбрана (обработчик по умолчанию для «button-press-event»), прежде чем что-либо еще произойдет. –