qt中有6个开关按下任意一个开关会on按下其他任何开关会off
时间: 2024-05-15 11:20:00 浏览: 125
可以使用QButtonGroup类来实现这个功能。
首先,在Qt Designer中创建6个QCheckBox控件,并将它们放在一个QGroupBox中。
然后,将这6个QCheckBox控件添加到一个QButtonGroup中,并将QButtonGroup的exclusive属性设置为true,以确保只有一个QCheckBox可以同时被选中。
最后,连接QButtonGroup的buttonClicked()信号到一个槽函数中,在槽函数中判断哪个QCheckBox被选中,将其它的QCheckBox设置为未选中状态。
以下是示例代码:
```python
from PyQt5.QtWidgets import QApplication, QMainWindow, QCheckBox, QGroupBox, QButtonGroup
from PyQt5.QtCore import Qt
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 创建一个QGroupBox
group_box = QGroupBox("Switches", self)
group_box.setGeometry(50, 50, 200, 150)
# 创建6个QCheckBox,并将它们添加到QGroupBox中
self.check_box1 = QCheckBox("Switch 1", self)
self.check_box2 = QCheckBox("Switch 2", self)
self.check_box3 = QCheckBox("Switch 3", self)
self.check_box4 = QCheckBox("Switch 4", self)
self.check_box5 = QCheckBox("Switch 5", self)
self.check_box6 = QCheckBox("Switch 6", self)
group_box_layout = QVBoxLayout()
group_box_layout.addWidget(self.check_box1)
group_box_layout.addWidget(self.check_box2)
group_box_layout.addWidget(self.check_box3)
group_box_layout.addWidget(self.check_box4)
group_box_layout.addWidget(self.check_box5)
group_box_layout.addWidget(self.check_box6)
group_box.setLayout(group_box_layout)
# 创建一个QButtonGroup,并将6个QCheckBox添加到其中
self.button_group = QButtonGroup(self)
self.button_group.addButton(self.check_box1, 1)
self.button_group.addButton(self.check_box2, 2)
self.button_group.addButton(self.check_box3, 3)
self.button_group.addButton(self.check_box4, 4)
self.button_group.addButton(self.check_box5, 5)
self.button_group.addButton(self.check_box6, 6)
self.button_group.setExclusive(True)
self.button_group.buttonClicked.connect(self.switch_clicked)
def switch_clicked(self, button):
if button.isChecked():
# 当选中一个开关时,将其它开关设置为未选中状态
for btn in self.button_group.buttons():
if btn is not button:
btn.setChecked(False)
else:
# 当取消选中一个开关时,将所有开关设置为未选中状态
for btn in self.button_group.buttons():
btn.setChecked(False)
if __name__ == '__main__':
app = QApplication([])
window = MainWindow()
window.show()
app.exec_()
```
这个程序中,当用户点击一个QCheckBox时,程序会将其它的QCheckBox设置为未选中状态。如果用户取消选中一个QCheckBox,程序会将所有的QCheckBox设置为未选中状态。这样就实现了当按下任意一个开关时,其它开关会关闭的功能。
阅读全文