python GUI库图形界面开发之PyQt5复选框控件QCheckBox详细使用方法与实例


Posted in Python onFebruary 28, 2020

QCheckBox类中常用方法如表

方法 描述
setChecked() 设置复选框的状态,设置为True表示选中,False表示取消选中的复选框
setText() 设置复选框的显示文本
text() 返回复选框的显示文本
isChecked() 检查复选框是否被选中
setTriState() 设置复选框为一个三态复选框
setCheckState() 三态复选框的状态设置,具体设置可以见下表

三态复选框的三种状态

名称 含义
Qt.Checked 2 组件没有被选中(默认)
Qt.PartiallyChecked 1 组件被半选中
Qt.Unchecked 0 组件被选中

QCheckBox按钮的使用实例

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt


class CheckBoxDemo(QWidget):

  def __init__(self, parent=None):
    super(CheckBoxDemo, self).__init__(parent)

    #创建一个GroupBox组
    groupBox = QGroupBox("Checkboxes")
    groupBox.setFlat(False)

    #创建复选框1,并默认选中,当状态改变时信号触发事件
    self.checkBox1 = QCheckBox("&Checkbox1")
    self.checkBox1.setChecked(True)
    self.checkBox1.stateChanged.connect(lambda: self.btnstate(self.checkBox1))

    #创建复选框,标记状态改变时信号触发事件
    self.checkBox2 = QCheckBox("Checkbox2")
    self.checkBox2.toggled.connect(lambda: self.btnstate(self.checkBox2))

    #创建复选框3,设置为3状态,设置默认选中状态为半选状态,当状态改变时信号触发事件
    self.checkBox3 = QCheckBox("tristateBox")
    self.checkBox3.setTristate(True)
    self.checkBox3.setCheckState(Qt.PartiallyChecked)
    self.checkBox3.stateChanged.connect(lambda: self.btnstate(self.checkBox3))

    #水平布局
    layout = QHBoxLayout()
    #控件添加到水平布局中
    layout.addWidget(self.checkBox1)
    layout.addWidget(self.checkBox2)
    layout.addWidget(self.checkBox3)

    #设置QGroupBox组的布局方式
    groupBox.setLayout(layout)

    #设置主界面布局垂直布局
    mainLayout = QVBoxLayout()
    #QgroupBox的控件添加到主界面布局中
    mainLayout.addWidget(groupBox)

    #设置主界面布局
    self.setLayout(mainLayout)
    #设置主界面标题
    self.setWindowTitle("checkbox demo")

  #输出三个复选框当前的状态,0选中,1半选,2没选中
  def btnstate(self, btn):
    chk1Status = self.checkBox1.text() + ", isChecked=" + str(self.checkBox1.isChecked()) + ', chekState=' + str(
      self.checkBox1.checkState()) + "\n"
    chk2Status = self.checkBox2.text() + ", isChecked=" + str(self.checkBox2.isChecked()) + ', checkState=' + str(
      self.checkBox2.checkState()) + "\n"
    chk3Status = self.checkBox3.text() + ", isChecked=" + str(self.checkBox3.isChecked()) + ', checkState=' + str(
      self.checkBox3.checkState()) + "\n"
    print(chk1Status + chk2Status + chk3Status)


if __name__ == '__main__':
  app = QApplication(sys.argv)
  checkboxDemo = CheckBoxDemo()
  checkboxDemo.show()
  sys.exit(app.exec_())

效果图如下

python GUI库图形界面开发之PyQt5复选框控件QCheckBox详细使用方法与实例

QCheckBox代码分析:

在这个例子中,将三个复选框添加到一个水平布局管理器中,并添加到一个QGroupBox组中

groupBox = QGroupBox("Checkboxes")
 groupBox.setFlat(False)

将三个复选框的stateChanged信号都连接到槽函数stateChanged(),使用landba的方式传递对象给槽函数

当QCheckBox状态改变时发射stateChanged信号,当信号发生改变时触发自定义的槽函数btnstate()

self.checkBox1.stateChanged.connect(lambda: self.btnstate(self.checkBox1))
self.checkBox2.toggled.connect(lambda: self.btnstate(self.checkBox2))
self.checkBox3.stateChanged.connect(lambda: self.btnstate(self.checkBox3))

实例化对象CheckBox1和CheckBox2两个对象,将CheckBox1的状态设置为选中,为CheckBox1设置为快捷键,使用‘&'符号,则可以通过快捷键Alt+C选中checkbox1复选框

self.checkBox1 = QCheckBox("&Checkbox1")
self.checkBox1.setChecked(True)

使用按钮的isChecked()方法,判断复选框是否被选中,其核心代码是:

chk1Status = self.checkBox1.text() + ", isChecked=" + str(self.checkBox1.isChecked()) + ', chekState=' + str(
      self.checkBox1.checkState()) + "\n"

实例化一个QCheckBox类的对象checkBox3,然后使用setTristate()开启三态模式,然后设置为半选状态并连接槽函数

self.checkBox3 = QCheckBox("tristateBox")
self.checkBox3.setTristate(True)
self.checkBox3.setCheckState(Qt.PartiallyChecked)
self.checkBox3.stateChanged.connect(lambda: self.btnstate(self.checkBox3))

本文详细讲解了PyQt5复选框控件QCheckBox详细使用方法与实例,更多关于PyQt5控件知识请查看下面的相关链接

Python 相关文章推荐
在阿里云服务器上配置CentOS+Nginx+Python+Flask环境
Jun 18 Python
解决python2.7用pip安装包时出现错误的问题
Jan 23 Python
使用Python3制作TCP端口扫描器
Apr 17 Python
Python 串口读写的实现方法
Jun 12 Python
python之mock模块基本使用方法详解
Jun 27 Python
python for循环remove同一个list过程解析
Aug 14 Python
如何获取Python简单for循环索引
Nov 21 Python
python识别验证码图片实例详解
Feb 17 Python
keras自定义回调函数查看训练的loss和accuracy方式
May 23 Python
python类共享变量操作
Sep 03 Python
pytorch中的model=model.to(device)使用说明
May 24 Python
使用tensorflow 实现反向传播求导
May 26 Python
Python post请求实现代码实例
Feb 28 #Python
python GUI库图形界面开发之PyQt5滑块条控件QSlider详细使用方法与实例
Feb 28 #Python
Python接口测试get请求过程详解
Feb 28 #Python
python GUI库图形界面开发之PyQt5工具栏控件QToolBar的详细使用方法与实例
Feb 28 #Python
Python爬取365好书中小说代码实例
Feb 28 #Python
Python反爬虫伪装浏览器进行爬虫
Feb 28 #Python
使用wxpy实现自动发送微信消息功能
Feb 28 #Python
You might like
德生1994机评
2021/03/02 无线电
PHP5中虚函数的实现方法分享
2011/04/20 PHP
PHP正则表达式之定界符和原子介绍
2012/10/05 PHP
深入PHP数据加密详解
2013/06/18 PHP
微信公众号开发之微信公共平台消息回复类实例
2014/11/14 PHP
总结PHP如何获取当前主机、域名、网址、路径、端口和参数等
2016/09/09 PHP
php将print_r处理后的数据还原为原始数组的解决方法
2016/11/02 PHP
thinkPHP+ajax实现统计页面pv浏览量的方法
2017/03/15 PHP
thinkPHP5.0框架URL访问方法详解
2017/03/18 PHP
PHP实现的观察者模式实例
2017/06/21 PHP
PHP使用Session实现上传进度功能详解
2019/08/06 PHP
Thinkphp 框架扩展之应用模式实现方法分析
2020/04/27 PHP
JQuery学习笔记 nt-child的使用
2011/01/17 Javascript
jquery中实现标签切换效果的代码
2011/03/01 Javascript
使用JavaScript 实现各种跨域的方法
2013/05/08 Javascript
js控制表单操作的常用代码小结
2013/08/15 Javascript
JavaScript使用cookie实现记住账号密码功能
2015/04/27 Javascript
jQuery链式调用与show知识浅析
2016/05/11 Javascript
微信小程序 设置启动页面的两种方法
2017/03/09 Javascript
VueJs监听window.resize方法示例
2018/01/17 Javascript
Servlet3.0与纯javascript通过Ajax交互的实例详解
2018/03/18 Javascript
在Vue中用canvas实现二维码和图片合成海报的方法
2019/06/10 Javascript
vue 兄弟组件的信息传递的方法实例详解
2019/08/30 Javascript
小程序接口的promise化的实现方法
2019/12/11 Javascript
JavaScript中如何调用Java方法
2020/09/16 Javascript
Python对列表去重的多种方法(四种方法)
2017/12/05 Python
3分钟学会一个Python小技巧
2018/11/23 Python
HTML5 文件域+FileReader 分段读取文件并上传到服务器
2017/10/23 HTML / CSS
Nuts.com:优质散装,批发坚果、干果和巧克力等
2017/03/21 全球购物
lookfantastic荷兰:在线购买奢华护肤、护发和化妆品
2018/11/27 全球购物
通用C#笔试题附答案
2016/11/26 面试题
技校个人求职信范文
2014/01/25 职场文书
对教师的评语
2014/04/28 职场文书
爱心募捐感谢信
2015/01/22 职场文书
高中家长意见怎么写
2015/06/03 职场文书
重阳节简报
2015/07/20 职场文书