从零开始学Pyqt5之【控件介绍】(6):QCheckButton多选框控件

简介: 从零开始学Pyqt5之【控件介绍】(6):QCheckButton多选框控件

QCheckButton控件的作用


QCheckBox提供了一组带文本标签的复选框,用户可以选择多个选项。和QPushButton一样,复选框可以显示文本或者图标,其中文本可以通过构造函数或者 setText()来设置:图标可以通过 setIcon()来设置。


通常可以用,QButtonGroup可以把许多复选框组织在一起。


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

QCheckBox通常被应用在需要用户选择一个或多个可用的选项的场景中。

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


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


QCheckButton控件的常用方法


ab06005f0b8845aaa72d7e6e98425cf8.png


三态复选框的三种状态


a6d9d07c9a49483784a6fb5f41e6a1cc.png


代码示例


# -*- coding: utf-8 -*-
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 = QGroupBox("Checkboxes")
    groupBox.setFlat( False )
    layout = QHBoxLayout()
    self.checkBox1= QCheckBox("&Checkbox1")
    self.checkBox1.setChecked(True)
    # 将复选框的stateChanged信号连接到槽函数stateChanged()。并使用 lambda的方式传递对象给槽函数。
    self.checkBox1.stateChanged.connect( lambda:self.btnstate(self.checkBox1) )
    layout.addWidget(self.checkBox1)
    self.checkBox2 = QCheckBox("Checkbox2")
    self.checkBox2.toggled.connect( lambda:self.btnstate(self.checkBox2) )
    layout.addWidget(self.checkBox2)
    self.checkBox3 = QCheckBox("tristateBox")
    # checkBox3开启3态模式
    self.checkBox3.setTristate(True)
    # 设置复选框3位半选中状态,1
    self.checkBox3.setCheckState(Qt.PartiallyChecked )    
    self.checkBox3.stateChanged.connect( lambda:self.btnstate(self.checkBox3) )
    layout.addWidget(self.checkBox3)
    groupBox.setLayout(layout)
    mainLayout = QVBoxLayout()
    mainLayout.addWidget(groupBox)
    self.setLayout(mainLayout)
    self.setWindowTitle("checkbox demo")
  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_())


代码中3个复选框的状态设置如下图:


442c523ee3b4494e89b2d682912e1c40.png


代码运行结果:


a0fb585be63146afb943ef8277c477e0.png

相关文章
|
C# 索引 Windows
Winform控件优化之TabControl控件的使用和常用功能
TabControl是一个分页切换(tab)控件,不同的页框内可以呈现不同的内容,将主要介绍调整tab的左右侧显示、设置多行tab、禁用或删除tabpage、隐藏TabControl头部的选项卡等
5194 0
Winform控件优化之TabControl控件的使用和常用功能
从零开始学Pyqt5之【控件介绍】(5):QRadioButton单选控件
从零开始学Pyqt5之【控件介绍】(5):QRadioButton单选控件
从零开始学Pyqt5之【控件介绍】(5):QRadioButton单选控件
|
数据安全/隐私保护
从零开始学Pyqt5之【控件介绍】(2):QLineEdit控件
从零开始学Pyqt5之【控件介绍】(2):QLineEdit控件
从零开始学Pyqt5之【控件介绍】(2):QLineEdit控件
从零开始学Pyqt5之【控件介绍】(12):QInputDialog对话框控件
从零开始学Pyqt5之【控件介绍】(12):QInputDialog对话框控件
从零开始学Pyqt5之【控件介绍】(12):QInputDialog对话框控件
从零开始学Pyqt5之【控件介绍】(13):QFontDialog字体选择对话框控件
从零开始学Pyqt5之【控件介绍】(13):QFontDialog字体选择对话框控件
从零开始学Pyqt5之【控件介绍】(13):QFontDialog字体选择对话框控件