当前位置: 首页 > news >正文

python顺序执行 toggle_python – 将CellRendererToggle的单行设置为不一致

在Gtk 3上,我使用TreeModel存储嵌套信息,并使用CellRendererText和CellRendererToggle显示它.用户可以在每个切换按钮上进行clic,当有嵌套按钮并且它们不处于相同状态时,我希望上层的按钮反映“不一致”状态.如何为一个元素设置此属性?

为了更清楚,我想从Transmission bittorrent客户端实现的一个例子:

我知道如何使用myCellRendererToggle.set_properties(不一致= True)将单元格渲染器的所有按钮设置为不一致状态,但似乎我无法从此处访问单个元素;

我知道如何访问我的TreeStore模型的特定行,但我只能设置«True»和«False»值.

这是我的代码:

class HelloMyApp:

def __init__(self):

# Set the Glade file

self.builder = Gtk.Builder()

self.builder.add_from_file(GLADEFILE)

dic = {

"on_button1_clicked" : self.btnValidate_clicked,

"on_MainWindow_destroy" : self.quit,

"on_window1_delete_event" : self.quit,

}

self.builder.connect_signals(dic)

window = self.builder.get_object("window1")

treeview1 = self.builder.get_object("treeview1")

######## This is my model : it stores a string and a boolean. #########

self.treeModel = Gtk.TreeStore(str, bool)

# Example on how to insert data in the model

treeIter = self.treeModel.append(None, ['example one', True])

self.treeModel.append(treeIter, [' simple elt', True])

treeIter = self.treeModel.append(treeIter, ['example two', False])

self.treeModel.append(treeIter, ['under example two', True])

select = treeview1.get_selection()

select.set_mode(Gtk.SelectionMode.BROWSE)

select.connect("changed", self.on_tree_selection_changed, buf)

# Using one column of text and another column with the toggle buttons

renderer = Gtk.CellRendererText()

column = Gtk.TreeViewColumn("Title", renderer, text=0)

treeview1.append_column(column)

###### Here is the CellRendereToggle ################

renderer_toggle = Gtk.CellRendererToggle()

renderer_toggle.connect("toggled", self.on_cell_toggled)

column_toggle = Gtk.TreeViewColumn("Installer", renderer_toggle, active=1)

treeview1.append_column(column_toggle)

treeview1.set_model(self.treeModel)

window.show_all()

if __name__ == "__main__":

HelloMyApp = HelloMyApp()

Gtk.main()

谢谢 !

编辑:回答马库斯:我无法弄清楚,当我在函数内部更改我的CellRendererToggle的属性时,它会改变每一行.

编辑解决方案:正如Marcu指出的那样,我们必须在每种情况下设置属性,这就是我添加else部分的原因.

def cellRenderer_func(column, cellRenderer, treeModel, treeIter, userData):

if 'cat' in treeModel.get_value(treeIter, 0):

# it happens only ones in my model,

# so here I am in a row I want to change to inconsistent.

cellRenderer.set_property('inconsistent',True)

# I was expecting that changes the box of that row but it affects every row.

else:

cellRenderer.set_property('inconsistent', False) # and that's ok now.

我得再试一次.

我想知道……我们真的必须手动完成它,它不能成为一个开箱即用的功能吗?

相关文章:

  • C#农历
  • c#如何读INI文件中的设置信息
  • iis7 mysql_IIS7 + mysql + php + wordPress 在win7下部署
  • mysql安装旧版本_mysql的安装(旧版本)
  • C#如何取硬件标志
  • mysql优化器 屏蔽索引_010 --MySQL查询优化器的局限性
  • NAT和Proxy的区别
  • mysql的sql执行原理图_Sql语句的执行原理-MySQL
  • RAS和微软终端或者Citrix有什么区别
  • 什么是DDN ASDL ISDN 宽带,它们之间有什么区别和联系
  • mysql主从配置实现_MySQL主从配置实现
  • 《英雄无敌 V》初次接触!
  • tableau 字段去重_Tableau 我常用函数整理
  • 分组查询 mysql_mysql基础-分组查询
  • 夜已深
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • Java到底能干嘛?
  • vue-cli在webpack的配置文件探究
  • vue--为什么data属性必须是一个函数
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 第十八天-企业应用架构模式-基本模式
  • 飞驰在Mesos的涡轮引擎上
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 开发基于以太坊智能合约的DApp
  • 前言-如何学习区块链
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 实现简单的正则表达式引擎
  • 算法系列——算法入门之递归分而治之思想的实现
  • 小李飞刀:SQL题目刷起来!
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • 优化 Vue 项目编译文件大小
  • 在Unity中实现一个简单的消息管理器
  • 智能合约开发环境搭建及Hello World合约
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • #162 (Div. 2)
  • (1)(1.9) MSP (version 4.2)
  • (day6) 319. 灯泡开关
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (差分)胡桃爱原石
  • (二)斐波那契Fabonacci函数
  • (二)正点原子I.MX6ULL u-boot移植
  • (九)One-Wire总线-DS18B20
  • (南京观海微电子)——I3C协议介绍
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (四)React组件、useState、组件样式
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (转)LINQ之路
  • ./和../以及/和~之间的区别
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记
  • .Net IE10 _doPostBack 未定义
  • .net refrector
  • .NET:自动将请求参数绑定到ASPX、ASHX和MVC(菜鸟必看)
  • .NET简谈设计模式之(单件模式)