【问题标题】:Selectable text in PyGTK cell rendererPyGTK 单元格渲染器中的可选文本
【发布时间】:2015-07-08 10:11:48
【问题描述】:

我正在寻找一种方法来实现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 做吗?

【问题讨论】:

    标签: python treeview gtk pygtk


    【解决方案1】:

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

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

    【讨论】:

    • 恐怕,在这种情况下,我无法让单元格可编辑,因为表格中的行可以在放置在“gtk.TreeView”之外的其他小部件中更改。在这种情况下,如果单元格可编辑,这将是 UI 中的一个缺陷,所以这就是为什么我正在寻找一种没有它的方法。
    • 问题在于行本身是可选择的。我想很难“覆盖”这种行为。
    • 是的,这不是一件小事。我想知道它是否可以在自定义 CellRenderer 级别上实现,或者它需要编写带有二十一点和新选择策略的新 TreeView 类小部件。
    猜你喜欢
    • 2011-10-02
    • 2013-04-27
    • 2018-08-26
    • 2021-05-12
    • 2018-10-15
    • 1970-01-01
    • 1970-01-01
    • 2019-01-13
    • 2018-02-13
    相关资源
    最近更新 更多