【发布时间】:2018-01-23 10:36:04
【问题描述】:
我正在尝试进行一些验证,例如:
- 选中“选择 A” 或 “选择 B” 时,会自动取消选中 “未选择”
- 选中“未选择”时,“选择 A” 和 “选择 B” 都会自动取消选中
但是当我运行此代码时,单击任何复选框都会取消选中 所有 3 个复选框。
即窗口初始化时选中了"None Selected"。但是当我点击 "Select A" 时,它会取消选中 "None Selected",这是有意的,但 "Select A" 没有得到检查。
我做错了什么?
import sys
import PyQt5
class Test(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
checkBoxNone = QCheckBox("None Selected")
checkBoxA = QCheckBox("Select A")
checkBoxB = QCheckBox("Select B")
checkBoxNone.setChecked(True)
checkBoxNone.stateChanged.connect(lambda checked: (checkBoxA.setChecked(False), checkBoxB.setChecked(False)))
checkBoxA.stateChanged.connect(lambda checked: checkBoxNone.setChecked(False))
checkBoxB.stateChanged.connect(lambda checked: checkBoxNone.setChecked(False))
grid = QGridLayout()
grid.addWidget(checkBoxNone, 1, 0)
grid.addWidget(checkBoxA, 2, 0)
grid.addWidget(checkBoxB, 3, 0)
self.setLayout(grid)
self.setWindowTitle('Test')
self.show()
if __name__ == '__main__':
if not QApplication.instance():
app = QApplication(sys.argv)
else:
app = QApplication.instance()
ex = Test()
sys.exit(app.exec_())
【问题讨论】:
标签: python lambda pyqt pyqt5 qcheckbox