📅  最后修改于: 2023-12-03 15:33:51.366000             🧑  作者: Mango
在 PyQt5 中,复选框是常用的控件之一。在一组复选框中,可以让用户选择多项内容。但是,有时候我们希望用户只能选择其中一个复选框,而不能同时选择多个。这个时候,就需要实现一组互斥的复选框。
实现一组互斥的复选框,需要用到 Qt 中的 QButtonGroup 类。QButtonGroup 对象可以维护一组按钮,并且可以设置这组按钮互斥(即只能选中其中一个按钮)。以下是一个实现一组互斥的复选框的示例代码:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QCheckBox, QVBoxLayout, QButtonGroup
class Example(QWidget):
def __init__(self):
super().__init__()
# 初始化窗口和布局
self.initUI()
def initUI(self):
# 创建复选框和布局
self.cb1 = QCheckBox('Checkbox 1')
self.cb2 = QCheckBox('Checkbox 2')
self.cb3 = QCheckBox('Checkbox 3')
vbox = QVBoxLayout()
vbox.addWidget(self.cb1)
vbox.addWidget(self.cb2)
vbox.addWidget(self.cb3)
# 创建 QButtonGroup 对象,并将复选框添加进去
self.group = QButtonGroup()
self.group.addButton(self.cb1, 1)
self.group.addButton(self.cb2, 2)
self.group.addButton(self.cb3, 3)
self.group.buttonClicked[int].connect(self.onClicked)
# 设置窗口布局并显示窗口
self.setLayout(vbox)
self.setGeometry(300, 300, 300, 150)
self.setWindowTitle('PyQt5 - Checkbox Example')
self.show()
def onClicked(self, id):
# 当任何一个复选框被点击时,获取当前选中的按钮的 ID 并打印到控制台
print('Checkbox %d clicked' % id)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
在这个示例代码中,我们创建了 3 个复选框,并用 QButtonGroup 对象将它们添加进去。通过连接 QButtonGroup 对象的 buttonClicked 信号,我们可以在任何一个复选框被点击时获取当前选中的复选框的 ID。同时,由于我们将这三个复选框添加到同一个 QButtonGroup 对象中,因此当用户选中其中一个复选框时,其他的复选框都会被取消选中。
本文介绍了在 PyQt5 中实现一组互斥的复选框的方法。通过使用 QButtonGroup 对象,我们可以轻松地让一组复选框成为互斥的。同时,我们还演示了如何在复选框被点击时获取选中的复选框的 ID。以上就是本文的全部内容。