gtk treeview:在行上放置图像按钮

时间:2011-02-09 01:01:02

标签: python gtk pygtk gtktreeview

对于我的树视图中的每一行,我想要彼此相邻的4个图像按钮。它们就像单选按钮一样,只有一个可以一次激活。每个按钮都有一个“开”和“关”图像。

我该怎么做?我想出了如何将图像放在那里,以及如何放置togglebuttons,但这似乎需要更多的努力,因为没有预先构建的cellrenderer做我想要的。

基本上解决我的问题的方法是弄清楚如何在gtk.treeview点击中制作图像。任何想法?

3 个答案:

答案 0 :(得分:2)

这是一个没有kiwi要求的简短版本。

class CellRendererClickablePixbuf(gtk.CellRendererPixbuf):

    __gsignals__ = {'clicked': (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE,
                                (gobject.TYPE_STRING,))
                   }

    def __init__(self):
        gtk.CellRendererPixbuf.__init__(self)
        self.set_property('mode', gtk.CELL_RENDERER_MODE_ACTIVATABLE)

    def do_activate(self, event, widget, path, background_area, cell_area,
                    flags):
        self.emit('clicked', path)

答案 1 :(得分:1)

看看这个' http://www.daa.com.au/pipermail/pygtk/2010-March/018355.html'。它向您展示了如何使gtk.CellRendererPixbuf可激活,并能够连接到单击事件信号。

cell = CellRendererPixbufXt()
cell.connect('clicked', func)

更新

正如所指出的那样,或者给出的参考不像宣传的那样有效。它缺少do_activate方法,该方法需要发出单击的信号。一旦完成,那么cell.connect将起作用。

很抱歉,如果这个回答误导了任何人。

答案 2 :(得分:0)

这对我有用:

class CellRendererClickablePixbuf(gtk.CellRendererPixbuf):
    gsignal('clicked', str)
    def __init__(self):
        gtk.CellRendererPixbuf.__init__(self)
        self.set_property('mode', gtk.CELL_RENDERER_MODE_ACTIVATABLE)
    def do_activate(self, event, widget, path, background_area, cell_area, flags):
        self.emit('clicked', path)