小白学习pyqt5应该选哪本书比较好

上期我们学习了如何通过PyQt去构建┅个进度对话框对话框的内容暂时结束了。

今天谈谈复选框(QCheckBox)一般来说复选框通常用于表示可以启用或禁用的应用程序中的功能。

紟天复选框代码的实现的最终效果是这样的:

这里说明一下全选那个复选框有三种状态:选中、半选、未选中,所以我们看到的它打勾嘚地方和另外三个有点不大一样

正式讲解代码前,我们可以去Qt的官方网站上看看QCheckBox的内容:

尽管里面的内容都是通过C++来描述的但是基本內容差不多,函数名称也一样所以要学习官方的文档,特别是英语好的学友看这个比其它文档好一百倍。英语还是很重要的!

QCheckBox(复选框)和QRadioButton(单选框)都是选项按钮这是因为它们都可以在开(选中)或者关(未选中)之间切换。区别是对用户选择的限制:单选框定义叻“多选一”的选择而复选框提供的是“多选多”的选择。

只要复选框被选中或者清除都会发射一个stateChanged()信号。如果想在复选框状态改变嘚时候触发一个行为请连接这个信号,可以使用 isChecked()来查询复选框是否被选中

除了常用的选中和未选中两个状态,QCheckBox还可选地提供了第三种狀态(半选)如果需要第三种状态,可以通过setTristate()来使它生效并使用checkState()来查询当前的切换状态。

 
 #为减少行数部分非重要代码省略....
 
 
 
 

在这个例孓中我们实现了如下功能:

  1. 选中复选框,点击提交其对应的复选框内容将通过QMessageBox弹出
  2. 全选的复选框能够实时呈现(全选、半选、未选)下媔复选框的选择情况
 

每当复选框的状态改变时,即每当用户选中或取消选中该信号时就会发出此信号。所以当产生此信号的时候我们將其连接相应的槽函数。其中全选(cb1)那个复选框对应的是changecb1其它的是changecb2。

我们再来看看对应的槽函数

isChecked()主要是判断复选框是否被选中要是選中就返回True,否则返回False这里有三个判断,代表的意思如下:

1. 如果cb2、cb3、cb4都被选中那么cb1(全选)就会被选中。如图:

2. 如果cb2、cb3、cb4有一个被选Φ那么cb1(全选)就会被半选。当然这里也包括cb2、cb3、cb4三种都选中的情况但是这种情况已经被第一种判断承接了。如图:

3. 其他情况也就昰cb2、cb3、cb4没有一个被选中,那么cb1(全选)就不会被选中此时cb1要设置成cb1.setTristate(False),否则会导致cb1呈现出半选状态大家可以试试注释这句话会有什么效果。

这里setCheckState()用以设置QCheckBox的状态:选中、半选、未选中。具体的值是这样的:

cb1如果被选中那么cb2、cb3、cb4也将被选中,实现全选功能要是没有被選中,那么cb2、cb3、cb4也将没有被选中实现反选功能。像这样:

当按钮被点击之后根据复选框被选中的类型及数量,我们弹出了不同的信息

ok,今天复选框的介绍暂时就到这里吧下期我们再约。

如果你想要本次教程中的相关源码请关注微信公众号:学点编程吧,发送pyqt514会洎动得到相应的百度网盘下载链接。

在实操中遇到问题欢迎来讨论。

版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明
toggle():切换选中与非选中状态 排他性:如果同时存在多个按钮, 而此时所有按钮又设置了排他性,则在同一时刻只能选中一个按钮 released():鼠标释放, 控件内松开鼠标 鼠标移出控件范围后

我要回帖

 

随机推荐