PyGTK: Fare doppio clic sul CellRenderer
-
26-09-2019 - |
Domanda
Nella mia applicazione PyGTK Attualmente uso 'modificabile' per rendere le cellule modificabile. Ma dal momento che i miei contenuti delle celle a volte sono davvero grandi voglio chiedere all'utente per le modifiche in una nuova finestra quando ha DoubleClick su una cella. Ma non riuscivo a trovare il modo di agganciare il doppio clic sul cellRenderer specifici - Non voglio modificare l'intera riga e anche io non voglio impostare questo callback per tutta la fila, solo per le colonne in cui troppo a lungo dei contenuti può succedere. Come posso fare questo con CellRendererText () o qualcosa di simile.
Il mio momento cella codice generatrice è:
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])
Grazie!
Soluzione
Credo che questo non è possibile direttamente. Tuttavia, è possibile connettersi a button-press-event
sul gtk.TreeView
. Poi, quando event.type
equivale a gtk.gdk._2BUTTON_PRESS
, convertito x
e y
di posizione dell'albero utilizzando gtk.TreeView.get_path_at_pos()
. Ciò restituirà sia un percorso albero che indica l'oggetto riga e gtk.TreeViewColumn
su cui è stato effettuato il clic.