python - 访问 gtk.TreeIter 里面的 render() 函数的 gtk.CellRenderer -- pygtk

标签 python pygtk cellrenderer

我正在尝试编写以下代码:两列。一个包含 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)

我不知道如何获取当前渲染行的迭代器,我需要它来确定 typeId 的值。这可能吗?

最佳答案

我现在知道了,感谢 gimpIRC 上 #pygtk 上的一个好人:

您可以通过将所谓的单元格数据函数绑定(bind)到相应的 gtk.TreeViewColumn 来做到这一点,如本例中所示

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 相关的代码,但我认为它显示了我想要做什么以及如何做。

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

我希望这可以帮助某人。

关于python - 访问 gtk.TreeIter 里面的 render() 函数的 gtk.CellRenderer -- pygtk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5331031/

相关文章:

python - 在共享主机上安装 python 包

python - 将两个文件与第三个文件的输入进行比较,并将最大计数写入第四个文件

python - 为什么 getattr() 在属性不存在时抛出异常?

python - 在 CentOS 上构建 PyGTK 时出现问题

windows - 在 Windows 10 上为 python 3.6.1 安装 pygtk

python - 在 Mac 上运行 PyGTK : AttributeError: xid attribute not supported?

python - 使用 PyGobject 创建自定义 GtkCellRenderer

java - 仅当 JList 项可见时才加载内容

java - 复选框节点树,自定义渲染器

python - subprocess.Popen() 将标准输出写入日志文件