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 相关文章推荐
python编写的最短路径算法
Mar 25 Python
在Python中用split()方法分割字符串的使用介绍
May 20 Python
Python基于Tkinter的HelloWorld入门实例
Jun 17 Python
详解flask表单提交的两种方式
Jul 21 Python
python 发送和接收ActiveMQ消息的实例
Jan 30 Python
Python实现爬取马云的微博功能示例
Feb 16 Python
基于django channel实现websocket的聊天室的方法示例
Apr 11 Python
Python button选取本地图片并显示的实例
Jun 13 Python
Django Celery异步任务队列的实现
Jul 24 Python
django框架面向对象ORM模型继承用法实例分析
Jul 29 Python
浅谈Django中的QueryDict元素为数组的坑
Mar 31 Python
Django利用AJAX技术实现博文实时搜索
May 06 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
用PHP和Shell写Hadoop的MapReduce程序
2014/04/15 PHP
PHP使用适合阅读的格式显示文件大小的方法
2015/03/05 PHP
php时间函数用法分析
2016/05/28 PHP
php实现遍历文件夹的方法汇总
2017/03/02 PHP
Thinkphp5 如何隐藏入口文件index.php(URL重写)
2019/10/16 PHP
一个js实现的所谓的滑动门
2007/05/23 Javascript
一个简单的JavaScript 日期计算算法
2009/09/11 Javascript
js表格分页实现代码
2009/09/18 Javascript
用JavaScript隐藏控件的方法
2009/09/21 Javascript
js 页面刷新location.reload和location.replace的区别小结
2009/12/24 Javascript
javascript cookie操作类的实现代码小结附使用方法
2010/06/02 Javascript
jquery下组织javascript代码(js函数化)
2010/08/25 Javascript
jQuery JSON的解析方式分享
2011/04/05 Javascript
如何使用jQuery Draggable和Droppable实现拖拽功能
2013/07/05 Javascript
JS控制图片等比例缩放的示例代码
2013/12/24 Javascript
javascript面向对象之访问对象属性的两种方式分析
2015/01/13 Javascript
jquery 全选、全不选、反选效果的实现代码【推荐】
2016/05/05 Javascript
jQuery Validate插件自定义验证规则的方法
2016/12/27 Javascript
node操作mysql数据库实例详解
2017/03/17 Javascript
angular 表单验证器验证的同时限制输入的实现
2019/04/11 Javascript
JS正则表达式封装与使用操作示例
2019/05/15 Javascript
解决vue-cli 打包后自定义动画未执行的问题
2019/11/12 Javascript
解决vue项目router切换太慢问题
2020/07/19 Javascript
Python编程给numpy矩阵添加一列方法示例
2017/12/04 Python
详解Python中的type和object
2018/08/15 Python
Selenium的使用详解
2018/10/19 Python
python+opencv实现霍夫变换检测直线
2020/10/23 Python
python2.7的flask框架之引用js&css等静态文件的实现方法
2019/08/22 Python
哪种Python框架适合你?简单介绍几种主流Python框架
2020/08/04 Python
CSS3实战第一波 让我们尽情的圆角吧
2010/08/27 HTML / CSS
HTML5 embed 标签使用方法介绍
2013/08/13 HTML / CSS
解释一下Windows的消息机制
2014/01/30 面试题
中学生操行评语
2014/04/24 职场文书
习近平在党的群众路线教育实践活动总结大会上的讲话
2014/10/21 职场文书
2014年施工员工作总结
2014/11/18 职场文书
mysql数据库实现设置字段长度
2022/06/10 MySQL