Como pegar cliques em um Gtk.TreeView?
-
21-08-2019 - |
Pergunta
Eu estou tentando pegar um evento duplo clique na área vazia de um TreeView para criar um novo nó. Infelizmente forma padrão não funciona. Eu tentei ligar ButtonPressEvent tanto TreeView eo ScrolledWindow em que T.V. está hospedado. Eu não entendo quaisquer chamadas de retorno à minha função.
Como posso resolver isso?
Solução
Você vai precisar usar o GLib.ConnectBeforeAttribute em seu manipulador de lidar com TreeView.ButtonPressEvent, caso contrário, o widget irá manipular o evento internamente e seu manipulador não será chamado.
exemplo:
[GLib.ConnectBefore]
void OnTreeViewButtonPressEvent(object sender, ButtonPressEventArgs e)
{
if (e.Type == Gdk.EventType.TwoButtonPress)
{
// double click
}
}
Outras dicas
http://old.nabble.com/CellRenderer- editável-on-duplo-clique-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"
Eu acho que o TreeView tem uma janela própria.
Obter o identificador de janela, e em seguida, SendMessage (Treeview-> GetSafeHwnd (), tvi_root, tvichildren)
A enviar mensagem acima é para o seu entendimento só.