Я пытаюсь поймать событие двойного щелчка в пустой области TreeView, чтобы создать новый узел. К сожалению, стандартный способ не работает. Я попытался подключить ButtonPressEvent к TreeView и ScrolledWindow, в котором размещается T.V. Я не получаю никаких обратных вызовов к моей функции.
Как я могу решить это?
Вам нужно будет использовать 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 есть собственное окно.
Получить дескриптор окна, а затем SendMessage (treeview-> Getsafehwnd (), tvi_root, tvichildren)
Вышеуказанное сообщение отправлено только для вашего понимания.