复选按钮QCheckBox

介绍

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_())

使用展示

复选按钮QCheckBox_第1张图片

后记

今天选宿舍有些小小难过吧,但是生活和学习必须继续!

你可能感兴趣的:(#,PyQt5)