- PyQt5 教程
- PyQt5 - 首页
- PyQt5 - 简介
- PyQt5 - 最新动态
- PyQt5 - Hello World
- PyQt5 - 主要类
- PyQt5 - 使用 Qt Designer
- PyQt5 - 信号与槽
- PyQt5 - 布局管理
- PyQt5 - 基本控件
- PyQt5 - QDialog 类
- PyQt5 - QMessageBox
- PyQt5 - 多文档界面
- PyQt5 - 拖放
- PyQt5 - 数据库处理
- PyQt5 - 绘图 API
- PyQt5 - BrushStyle 常量
- PyQt5 - QClipboard
- PyQt5 - QPixmap 类
- PyQt5 有用资源
- PyQt5 - 快速指南
- PyQt5 - 有用资源
- PyQt5 - 讨论
PyQt5 - QCheckBox 控件
当QCheckBox对象添加到父窗口时,文本标签前面会出现一个矩形框。与QRadioButton一样,它也是一个可选按钮。它的常见用途是在用户被要求选择一个或多个可用选项的场景中。
与单选按钮不同,复选框默认情况下不是互斥的。为了将选择限制在一个可用项目中,必须将复选框添加到QButtonGroup。
下表列出了常用的QCheckBox类方法:
| 序号 | 方法及描述 |
|---|---|
| 1 |
setChecked() 更改复选框按钮的状态 |
| 2 |
setText() 设置与按钮关联的标签 |
| 3 |
text() 检索按钮的标题 |
| 4 |
isChecked() 检查按钮是否被选中 |
| 5 |
setTriState() 为复选框提供无变化状态 |
每次选中或清除复选框时,对象都会发出stateChanged()信号。
示例
这里,两个QCheckBox对象被添加到水平布局中。它们的stateChanged()信号连接到btnstate()函数。使用lambda将信号的源对象传递给函数。
self.b1.stateChanged.connect(lambda:self.btnstate(self.b1)) self.b2.toggled.connect(lambda:self.btnstate(self.b2))
isChecked()函数用于检查按钮是否被选中。
if b.text() == "Button1":
if b.isChecked() == True:
print b.text()+" is selected"
else:
print b.text()+" is deselected"
完整的代码如下:
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class checkdemo(QWidget):
def __init__(self, parent = None):
super(checkdemo, self).__init__(parent)
layout = QHBoxLayout()
self.b1 = QCheckBox("Button1")
self.b1.setChecked(True)
self.b1.stateChanged.connect(lambda:self.btnstate(self.b1))
layout.addWidget(self.b1)
self.b2 = QCheckBox("Button2")
self.b2.toggled.connect(lambda:self.btnstate(self.b2))
layout.addWidget(self.b2)
self.setLayout(layout)
self.setWindowTitle("checkbox demo")
def btnstate(self,b):
if b.text() == "Button1":
if b.isChecked() == True:
print b.text()+" is selected"
else:
print b.text()+" is deselected"
if b.text() == "Button2":
if b.isChecked() == True:
print b.text()+" is selected"
else:
print b.text()+" is deselected"
def main():
app = QApplication(sys.argv)
ex = checkdemo()
ex.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
输出
以上代码产生以下输出:
Button2 is selected Button2 is deselected Button1 is deselected Button1 is selected
如前所述,可以通过将checkBox按钮添加到QButtonGroup对象中来使其互斥。
self.bg = QButtonGroup() self.bg.addButton(self.b1,1) self.bg.addButton(self.b2,2)
QButtonGroup对象为按钮提供抽象容器,并且没有可视化表示。它发出buttonCliked()信号并将Button对象的引用发送到槽函数btngroup()。
self.bg.buttonClicked[QAbstractButton].connect(self.btngroup)
btngroup()函数显示被点击的复选框的标题。
def btngroup(self,btn): print btn.text()+" is selected"
进行上述更改后,应用程序窗口显示如下:
Button1 is selected Button2 is selected Button1 is selected
pyqt_basic_widgets.htm
广告