访问gtk.treeter inside render()gtk.cellrenderer的函数 - pygtk
-
26-10-2019 - |
题
我正在尝试编码以下编码:两列。一个包含一个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的值。这甚至可能吗?
解决方案
我现在发现了,感谢Gimptirc上的#PyGTK上的一个好人:
您可以做到这一点,将所谓的单元数据函数与相应的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)
我遵守了一些与完整的树景相关的代码,但是我认为它显示了我想做的事情以及如何做。
仅当第二个ModelColumn(1)中的值等于3时,该列仅在模型的第一列(0)中渲染值
我希望这可以帮助某人。
其他提示
据我所知,这是不可能的。您需要使用自定义渲染器的属性,该属性将通过调用渲染函数的代码自动设置。 (像 text
财产的 CellRendererText
- 渲染代码不会从树模型中获取文本,但是树模型设置了 text
调用渲染代码之前,渲染器的属性。)
不隶属于 StackOverflow