Как ловить клики в Gtk.TreeView? - PullRequest
4 голосов
/ 11 мая 2009

Я пытаюсь поймать событие двойного щелчка в пустой области TreeView, чтобы создать новый узел. К сожалению, стандартный способ не работает. Я попытался подключить ButtonPressEvent к TreeView и ScrolledWindow, в котором размещается T.V. Я не получаю никаких обратных вызовов к моей функции.

Как я могу решить это?

Ответы [ 3 ]

8 голосов
/ 11 мая 2009

Вам нужно будет использовать GLib.ConnectBeforeAttribute в своем обработчике для обработки TreeView.ButtonPressEvent, в противном случае виджет будет обрабатывать событие внутренне, и ваш обработчик не будет вызываться.

пример:

[GLib.ConnectBefore]
void OnTreeViewButtonPressEvent(object sender, ButtonPressEventArgs e)
{
    if (e.Type == Gdk.EventType.TwoButtonPress)
    {
        // double click
    }
}    
2 голосов
/ 07 февраля 2011

http://old.nabble.com/CellRenderer-editable-on-double-click-td24975510.html

self.treeview.connect("button-press-event",self.cell_clicked)

def cell_clicked(self, widget, event):
     if event.button == 1 and event.type == gtk.gdk.BUTTON_PRESS:
        print "Double clicked on cell"
0 голосов
/ 11 мая 2009

Я думаю, что у Treeview есть собственное окно.

Получить дескриптор окна, а затем SendMessage (treeview-> Getsafehwnd (), tvi_root, tvichildren)

Вышеуказанное сообщение отправлено только для вашего понимания.

...