QCheckButton控件的作用
QCheckBox提供了一组带文本标签的复选框,用户可以选择多个选项。和QPushButton一样,复选框可以显示文本或者图标,其中文本可以通过构造函数或者 setText()来设置:图标可以通过 setIcon()来设置。
通常可以用,QButtonGroup可以把许多复选框组织在一起。
QCheckBox(复选框)和QRadioButton(单选钮)都是选项按钮,因为它们都可以在开(选中)或者关(未选中)之间切换。它们的区别是对用户选择的限制:单选钮提供了“多选一”的选择;而复选框提供的是“多选多”的选择。
QCheckBox通常被应用在需要用户选择一个或多个可用的选项的场景中。
只要复选框被选中或者取消选中,都会发射一个stateChanged信号。如果想在复选框状态改变时触发相应的行为,请连接这个信号,可以使用isChecked()来查询复选框是否被选中。
除了常用的选中和未选中两种状态,QCheckBox还提供了第三种状态:半选中状态。如果需要第三种状态,则可以通过setTristate()来使它生效,并使用checkState(来查询当前的切换状态。
QCheckButton控件的常用方法
三态复选框的三种状态
代码示例
# -*- 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个复选框的状态设置如下图:
代码运行结果: