在pyg的gtk.CellRenderer的render()函数内访问gtk.TreeIter

2024-09-30 10:35:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图编写以下代码:两列。一个包含itemId,另一个包含typeId。我只想在typeId等于特定值时呈现itemId。在


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)

我不知道如何获取当前呈现行的iter,我需要它来确定typeId的值。这有可能吗?在


Tags: selfgtkinitdefcellareawidgetrender
2条回答

我现在发现了,多亏了gimpIRC上的一个好人:

可以通过将所谓的单元数据函数绑定到相应的gtk.treeview列就像在这个例子中所做的那样

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)

我修改了一些与呈现一个完整的treeview相关的代码,但是我认为它显示了我想要做什么以及如何去做。在

仅当第二个modelcolumn(1)中的值等于3时,列才会呈现模型第一列(0)中的值

我希望这能对某人有所帮助。在

据我所知不可能。您需要使用自定义呈现器的属性,这些属性将由调用呈现函数的代码自动设置。(与CellRendererTexttext属性一样,呈现代码不会从树模型中获取文本,但是树模型在调用呈现代码之前设置呈现器的text属性。)

相关问题 更多 >

    热门问题