2011-03-16 56 views
1

我想编码以下内容:两列。一个包含一个itemId,另一个包含一个typeId。我只想在typeId等于一个特定值时渲染itemId。gtk.TreeIter里面render()gtk.CellRenderer的函数 - pygtk


class IDRenderer(gtk.CellRendererText): 

    def __init__(self): 
    gtk.CellRendererText.__init__(self) 

    def do_render(self,window, widget, background_area, cell_area, expose_area, flags): 
    if ----} Condition to ask for value of the typeId - Cell {-----: 
     gtk.CellRendererText.do_render(self, window, widget, background_area, cell_area,  
            expose_area, flags) 

gobject.type_register(IDRenderer) 

我不知道如何获得当前渲染行,我需要确定的typeid价值的国际热核实验堆。这甚至有可能吗?

回答

2

我现在发现, 2009年,由于#pygtk一个好人上gimpIRC:

你可以做到这一点,与这里做在这个例子中

def renderId(celllayout, cell, model, iter): 
    if model.get_value(iter,1) == 3: 
    cell.set_property('visible',True) 
    else: 
    cell.set_property('visible',False) 

treeviewcolumn = gtk.TreeViewColumn() 
renderer = gtk.CellRendererText() 
treeviewcolumn.add_attribute(renderer,'text',0) 
treeviewcolumn.set_cell_data_func(renderer,renderId) 

所谓的单元格数据的功能结合到相应的gtk.TreeViewColumn我中省略了一些代码与呈现完整的树视图有关,但我认为它显示了我想要做的事情以及如何去做。

列renderes模型中的第一列(0)的值,只有在第二modelcolumn(1)的值等于3

我希望这能帮助别人一些时间。

0

据我所知,这是不可能的。您需要使用自定义渲染器的属性,该属性将由调用渲染函数的代码自动设置。 (像CellRendererTexttext属性 - 渲染代码没有得到来自树模型的文本,但神木模式设置渲染的text属性调用渲染代码之前)