PyGTK:双击CellRenderer
在我的PyGTK应用程序中,我现在使用'editable'来让单元格可以编辑。但是因为我的单元格内容有时候真的很大,所以我想在用户双击单元格时,弹出一个新窗口让他们进行修改。不过我找不到如何在特定的单元格渲染器上处理双击事件。我不想编辑整行,也不想为整行设置这个回调,只想针对那些可能内容过长的列。请问我该如何使用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 个回答
4
我觉得这直接是做不到的。不过,你可以在 gtk.TreeView
上连接到 button-press-event
这个事件。然后,当 event.type
等于 gtk.gdk._2BUTTON_PRESS
时,你可以用 gtk.TreeView.get_path_at_pos()
把 x
和 y
转换成树形结构中的位置。这样就能返回一个树路径,告诉你点击的是哪一行,还有一个 gtk.TreeViewColumn
对象,表示你点击的是哪一列。