Python PyGTK单元格渲染器中的可选文本

Python PyGTK单元格渲染器中的可选文本,python,treeview,gtk,pygtk,Python,Treeview,Gtk,Pygtk,我正在寻找一种实现gtk.cellRenderText的方法,使其支持选择要复制的单元格内容。另一个可取的特性是支持Pango标记语言。到目前为止,我已经成功地完成了Pango代码的渲染(虽然实际上并不理想): 我被困在这里了。如何使渲染文本可选?我试图从gtk.LabelC源代码中获得灵感(因为它支持文本选择),但对它们是如何实现的却没有明确的概念。另一件让我困扰的事情是,cell renderer不是一个小部件(以及其中的Pango文本),应该在gtk.TreeView级别处理类点击信号 我

我正在寻找一种实现
gtk.cellRenderText
的方法,使其支持选择要复制的单元格内容。另一个可取的特性是支持Pango标记语言。到目前为止,我已经成功地完成了Pango代码的渲染(虽然实际上并不理想):

我被困在这里了。如何使渲染文本可选?我试图从
gtk.Label
C源代码中获得灵感(因为它支持文本选择),但对它们是如何实现的却没有明确的概念。另一件让我困扰的事情是,cell renderer不是一个小部件(以及其中的Pango文本),应该在
gtk.TreeView
级别处理类点击信号


我的结论是,
gtk.TreeView
绝对不是为这样的功能而设计的,而且我对PyGTK还不熟悉,几乎无法想象如何继续,所以在这里征求建议。甚至可以从PyGTK执行此操作吗?

只需使用Gtk.cellRenderText,并在其中使用标记和可编辑文本,就更容易了。


如果您不希望用户能够实际更改文本,您可以连接到相应的信号(“已编辑”),并将其设置回旧文本,以便用户无法进行任何更改。

恐怕,在这种情况下,我无法使单元格可编辑,因为表中的行可以在“gtk.TreeView”之外的其他小部件中更改。在这种情况下,让单元格可编辑是UI中的一个缺陷,因此我正在寻找一种不使用单元格的方法。问题是,单元格本身的行是可选择的。我想很难“推翻”这种行为。是的,这不是一件小事。我想知道它是否可以在自定义
CellRenderer
级别上实现,或者它需要编写新的
TreeView
-类似于blackjack和新选择策略的小部件。
class CellRendererSelectableText(gtk.CellRendererText):
    # ...omitted...
    def do_render(self, window, widget, background_area, cell_area, expose_area, flags):
        layout = pango.Layout(widget.get_pango_context())
        layout.set_markup(self.get_property('text'))
        # ...
        widget.get_style().paint_layout(window, gtk.STATE_NORMAL, False, cell_area, widget, '', x, y, layout)