PyQt5 GUI编程——QCheckBox

QCheckBox类继承自QAbstractButton类,它提供了一组带文本标签的复选框,用户可以选择多个选项。和QPushButton一样,复选框可以显示文本或者图标,其中文本可以通过构造函数或者setText()来设置,图标可以通过setIcon()来设置。在视觉上,QButtonGroup可以把许多复选框组织在一起。
QCheckBox(复选框)和QRadioButton(单选钮)都是选项按钮,它们的区别在于单选钮为多选一,而复选框为多选多。QCheckBox通常被应用于需要用户选择一个或多个的选项的场景中。
只要复选框被选中或者被取消选中,都会发射一个stateChanged信号。除了常用的选中和未选中两种状态,QCheckBox还提供了第三种状态(半选中)来表示“没有变化”。当需要为用户提供一个选中或者未选中复选框的选择时,这种状态是很有用的。如果需要第三种状态,则可以通过setTristate()来使它生效,并使用checkState()来查询当前的切换状态。
QCheckBox类的常用方法如下:
PyQt5 GUI编程——QCheckBox_第1张图片
三态复选框有三种状态,如下所示:
PyQt5 GUI编程——QCheckBox_第2张图片
应用实例如下:

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

class CheckBoxDemo(QWidget):
	def __init__(self,parent=None):
		super().__init__(parent)
		
		groupBox = QGroupBox("Checkboxes")
		#去除groupBox的边框
		groupBox.setFlat(True)    
		
		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("Checkbox3")
		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()) + ', checkState=' + 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_())

PyQt5 GUI编程——QCheckBox_第3张图片

你可能感兴趣的:(PyQt5 GUI编程——QCheckBox)