Pygtk: DoubleClick no CelleRenderer
-
26-09-2019 - |
Pergunta
No meu aplicativo PYGTK, atualmente uso 'editável' para tornar as células editáveis. Mas como o conteúdo do meu celular às vezes é realmente muito grande, quero pedir ao usuário alterações em uma nova janela quando ele se dobrar em uma célula. Mas não consegui descobrir como prender com cliques duas vezes em Cellrenders específicos - não quero editar a linha inteira e também não quero definir esse retorno de chamada para toda a linha, apenas para colunas onde conteúdo muito longo pode acontecer. Como posso fazer isso com CellRendeRText () ou algo semelhante.
Meu código de geração de células atualmente é:
cols[i] = gtk.TreeViewColumn(coltitle)
cells[i] = gtk.CellRendererText()
cols[i].pack_start(cells[i])
cols[i].add_attribute(cells[i], 'text', i)
cols[i].set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
cols[i].set_fixed_width(100)
cells[i].set_property('editable', True)
cells[i].connect('edited', self.edited, (i, ls))
cols[i].set_resizable(True)
mytreeview.append_column(cols[i])
Obrigado!
Solução
Eu acredito que isso não é possível diretamente. No entanto, você pode se conectar a button-press-event
no gtk.TreeView
. Então quando event.type
igual a gtk.gdk._2BUTTON_PRESS
, converta x
e y
para o local da árvore usando gtk.TreeView.get_path_at_pos()
. Isso retornará um caminho de árvore indicando a linha e gtk.TreeViewColumn
objeto no qual o clique foi feito.