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

时间:2015-07-08 10:11:49

标签: python treeview gtk pygtk

我正在寻找一种方法来实现gtk.CellRendererText,使其支持选择要复制的单元格内容。 Just like it is done it HTML。另一个理想的功能是支持Pango标记语言。到目前为止,我已经设法渲染Pango代码(实际上远非理想,但是):

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)

在这里,我被困住了。如何使渲染文本可选?我试图从gtk.Label C源获取灵感(因为它支持文本选择),但不清楚它们是如何做到的。令我困扰的另一件事是,单元格渲染器不是小部件(以及其中的Pango文本),并且应该在gtk.TreeView级别处理类似点击的信号。

我的结论是gtk.TreeView绝对不是为这样的功能而设计的,而且我是PyGTK的新手,几乎无法想象如何继续,所以在这里征求意见。甚至可以从PyGTK做到吗?

1 个答案:

答案 0 :(得分:0)

使用Gtk.CellRendererText并在那里使用标记和编辑要容易得多。 treeview preview

如果您不希望用户能够实际更改文本,您可以连接到相应的信号("编辑")并将其重新设置为旧文本,以便用户不能做任何改变。