2011-03-16 22 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屬性調用渲染代碼之前)