PyGTK: двойной щелчок на CellRenderer - PullRequest
2 голосов
/ 12 мая 2010

В моем приложении PyGTK в настоящее время я использую «редактируемые», чтобы сделать ячейки редактируемыми. Но так как содержимое моей ячейки иногда действительно очень большое, я хочу попросить пользователя внести изменения в новом окне, когда он дважды щелкает ячейку. Но я не мог выяснить, как зацепить двойной щелчок по конкретным обработчикам ячеек - я не хочу редактировать всю строку и не хочу устанавливать этот обратный вызов для всей строки, только для столбцов с слишком длинным содержимым может возникнуть. Как я могу сделать это с CellRendererText () или что-то подобное.

Мой код, генерирующий ячейки:

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])

Спасибо!

1 Ответ

3 голосов
/ 12 мая 2010

Я считаю, что это невозможно напрямую. Однако вы можете подключиться к button-press-event на gtk.TreeView. Затем, когда event.type равно gtk.gdk._2BUTTON_PRESS, конвертируйте x и y в древовидную структуру, используя gtk.TreeView.get_path_at_pos(). Это вернет как древовидный путь, указывающий на строку, так и gtk.TreeViewColumn объект, по которому был сделан щелчок.

...