我正在寻找一种方法来实现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做到吗?
答案 0 :(得分:0)
使用Gtk.CellRendererText并在那里使用标记和编辑要容易得多。
如果您不希望用户能够实际更改文本,您可以连接到相应的信号("编辑")并将其重新设置为旧文本,以便用户不能做任何改变。