介绍
QCheckBox类继承自QAbstractButton类,它提供了一组带文本标签的复选框,用户可以选择多个选项。和QPushButton一样,复选框可以显示文本或者图标,其中文本可以通过构造函数或者setText()
来设置;图标可以通过setIcon()
来设置。在视觉上,QButtonGroup可以吧许多复选框组织在一起。
QcheckBox(复选框)和QRadioButton(单选框)都是选项按钮,因为它们都可以在开(选中)或者关(未选中)之间切换。它们的区别是对“多选一”和“多选多”。
只要复选框被选中或者取消选中,都会发射一个stateChanged
信号。如果想在复选框状态改变时触发相应的行为,请连接这个信号,可以使用isChecked()
来查询复选框是否被选中。
除了常见的选中和未选中两种状态,QCheckBox提供了第三种状态(半选中)来表明“没有变化”。当需要为用户提供一个选中或者未选中复选框的选择时,这种状态很有用。如果需要第三种状态,则可以通过setTristate()
来使它生效,并使用checkState()来查询当前的切换状态。
方法
方法 | 描述 |
setChecked() | 设置复选框的状态,设置为True时表示选中复选框,设置为False时表示取消选中复选框 |
setText() | 设置复选框的显示文本 |
text() | 返回复选框的显示文本 |
isChecked() | 检查复选框是否被选中 |
setTriState() | 设置复选框为一个三态复选框 |
三态复选框有三种状态。
名称 | 值 | 含义 |
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 = QGroupBox("Checkboxes")
groupBox.setFlat( False )
layout = QHBoxLayout()
self.checkBox1= QCheckBox("&Checkbox1")
self.checkBox1.setChecked(True)
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")
self.checkBox3.setTristate(True)
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_())
使用展示
后记
今天选宿舍有些小小难过吧,但是生活和学习必须继续!