我正在尝试进行一些验证,以便:
但当我运行这段代码时,单击任何复选框将取消选中全部这3个复选框。在
即,窗口初始化时选中“无选择”。但是当我点击选择一个“”时,它会取消选中“无选择”,这是有意的,但是“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_())
问题的产生是因为根据您的要求,您应该只在某些
QCheckBox
被选中但没有进行验证的情况下,才应该做出这些选择,以便能够正确地处理它,创建一个插槽,并知道信号是由哪个对象发出的,sender()
方法:相关问题 更多 >
编程相关推荐