python顺序执行 toggle_将CellRenderToggle的单行设置为不一致

可以通过使用单元格数据函数来设置一个元素的属性。由于我只在C语言中完成了这项工作,所以我只能将PyGTK文档的链接传递给您,我还没有看到PyGObject这个特性的相关文档。在

由于PyGTK是文档化的here,this页面在底部给出了一个示例,PyGTK的单元格数据函数的使用也在this文档中有所体现。在

例如,如果您希望执行与传输相同的操作,可以执行以下操作:

因为您接收当前iter作为cell data函数的参数,所以您可以遍历它的所有子元素并检查子元素的状态。然后您将知道在父节点上设置哪个状态。现在的要点是在cell data函数中设置属性只会影响这个单元格,而不会影响treeview的所有元素。在

我还可以为我自己的应用程序提供一个可视化示例:

我在这个树视图中有“Value”列。如果“Menu Element”列中的值设置为“enabled”,而“Type”列中的值为“option”,则会显示一个复选框而不是文本(我突出显示了这样一行)。示例图像还显示了一个活动的搜索,其中突出显示了搜索结果。这两种方法都可以通过单元格数据函数按您在问题中的要求设置一个元素的属性。在

编辑

我做了一些示例代码。主要的一点是,单元格属性总是为每个单元格设置的。所以不仅仅是“如果…,然后设置属性”,而是“如果,像这样设置属性,否则,设置属性那样”。(它基于旧的PyGTK文档,但是无论如何它应该澄清一些事情)。在#!/usr/bin/env python

# example basictreeview.py

import pygtk

pygtk.require('2.0')

import gtk

class BasicTreeViewExample:

def set_status(self, column, cell, model, iter):

if 'inconsistent' in model.get_value(iter, 0):

cell.set_property('inconsistent',True)

else:

cell.set_property('inconsistent',False)

return

def delete_event(self, widget, event, data=None):

gtk.main_quit()

return False

def __init__(self):

self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)

self.window.set_title("Basic TreeView Example")

self.window.set_size_request(200, 200)

self.window.connect("delete_event", self.delete_event)

self.treestore = gtk.TreeStore(str)

for parent in range(4):

piter = self.treestore.append(None, ['parent %i' % parent])

for child in range(3):

if child == 1:

self.treestore.append(piter, ['consistent'])

else:

self.treestore.append(piter, ['inconsistent'])

self.treeview = gtk.TreeView(self.treestore)

self.tvcolumn0 = gtk.TreeViewColumn('Column 0')

self.tvcolumn1 = gtk.TreeViewColumn('Column 1')

self.treeview.append_column(self.tvcolumn0)

self.treeview.append_column(self.tvcolumn1)

self.text = gtk.CellRendererText()

self.toggle = gtk.CellRendererToggle()

self.tvcolumn0.pack_start(self.text, True)

self.tvcolumn1.pack_start(self.toggle, True)

self.tvcolumn0.add_attribute(self.text, 'text', 0)

self.tvcolumn1.set_cell_data_func(self.toggle, self.set_status)

self.window.add(self.treeview)

self.window.show_all()

def main():

gtk.main()

if __name__ == "__main__":

tvexample = BasicTreeViewExample()

main()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值