Как ловить клики в Gtk.Просмотр дерева?
-
21-08-2019 - |
Вопрос
Я пытаюсь перехватить событие двойного щелчка в пустой области TreeView, чтобы создать новый узел.К сожалению, стандартный способ не работает.Я попытался прикрепить ButtonPressEvent как к TreeView, так и к ScrolledWindow, в котором отображается телевизор.размещается.Я не получаю никаких обратных вызовов к своей функции.
Как я могу решить эту проблему?
Решение
Вам нужно будет использовать GLib.ConnectBeforeAttribute в вашем обработчике для обработки TreeView.ButtonPressEvent , в противном случае виджет обработает событие внутренне, и ваш обработчик не будет вызван.
пример:
[GLib.ConnectBefore]
void OnTreeViewButtonPressEvent(object sender, ButtonPressEventArgs e)
{
if (e.Type == Gdk.EventType.TwoButtonPress)
{
// double click
}
}
Другие советы
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"
Я думаю, что у Treeview есть свое собственное окно.
Получаем дескриптор окна, а затем отправляем сообщение(treeview->Getsafehwnd() , tvi_root, tvichildren).
Приведенное выше сообщение предназначено только для вашего понимания .