Отключение и включение радиокнопок из другой радиокнопки в PyQt4 Python
У меня есть 3 группы радиокнопок в форме "Да" или "Нет". Я хочу отключить последние 2 группы радиокнопок, если первая радиокнопка "Нет", и включить их, когда первая радиокнопка "Да". Я могу включить или отключить по умолчанию, но переключение Да / Нет из первой группы не меняет результат во второй и третьей группе.
Вот краткое изложение моего кода:
self.yes_radioButtonGroup1 = QtGui.QRadioButton(self.centralwidget)
self.yes_radioButtonGroup1.setObjectName(_fromUtf8("yes_radioButtonGroup1"))
self.no_radioButtonGroup1 = QtGui.QRadioButton(self.centralwidget)
self.no_radioButtonGroup1.setObjectName(_fromUtf8("no_radioButtonGroup1"))
self.radioButtonGroup1= QtGui.QButtonGroup(MainWindow)
self.radioButtonGroup1.setObjectName(_fromUtf8("radioButtonGroup1"))
self.radioButtonGroup1.addButton(self.yes_radioButtonGroup1)
self.radioButtonGroup1.addButton(self.no_radioButtonGroup1)
self.yes_radioButtonGroup2 = QtGui.QRadioButton(self.centralwidget)
self.yes_radioButtonGroup2.setObjectName(_fromUtf8("yes_radioButtonGroup2"))
self.no_radioButtonGroup2 = QtGui.QRadioButton(self.centralwidget)
self.no_radioButtonGroup2.setObjectName(_fromUtf8("no_radioButtonGroup2"))
self.radioButtonGroup2= QtGui.QButtonGroup(MainWindow)
self.radioButtonGroup2.setObjectName(_fromUtf8("radioButtonGroup2"))
self.radioButtonGroup2.addButton(self.yes_radioButtonGroup1)
self.radioButtonGroup2.addButton(self.no_radioButtonGroup1)
self.yes_radioButtonGroup3 = QtGui.QRadioButton(self.centralwidget)
self.yes_radioButtonGroup3.setObjectName(_fromUtf8("yes_radioButtonGroup3"))
self.no_radioButtonGroup3 = QtGui.QRadioButton(self.centralwidget)
self.no_radioButtonGroup3.setObjectName(_fromUtf8("no_radioButtonGroup3"))
self.radioButtonGroup3= QtGui.QButtonGroup(MainWindow)
self.radioButtonGroup3.setObjectName(_fromUtf8("radioButtonGroup3"))
self.radioButtonGroup3.addButton(self.yes_radioButtonGroup3)
self.radioButtonGroup3.addButton(self.no_radioButtonGroup3)
if self.yes_radioButtonGroup1.isChecked() == True:
self.yes_radioButtonGroup2.setEnabled(True)
self.no_radioButtonGroup2.setEnabled(True)
self.yes_radioButtonGroup3.setEnabled(True)
self.no_radioButtonGroup3.setEnabled(True)
elif self.no_radioButtonGroup1.isChecked() == True:
self.yes_radioButtonGroup2.setEnabled(False)
self.no_radioButtonGroup2.setEnabled(False)
self.yes_radioButtonGroup3.setEnabled(False)
self.no_radioButtonGroup3.setEnabled(False)
Мне было интересно, знает ли кто-нибудь, как динамически включать или отключать последние две группы радиокнопок при изменении значений из первой радиокнопки?
1 ответ
Решение
Поскольку кнопки достаточно эксклюзивны, чтобы контролировать одну из них, соответствующий сигнал toggled()
который отправляет информацию, если кнопка отмечена или нет.
self.yes_radioButtonGroup1 = QtGui.QRadioButton(self.centralwidget)
self.yes_radioButtonGroup1.setObjectName(_fromUtf8("yes_radioButtonGroup1"))
self.no_radioButtonGroup1 = QtGui.QRadioButton(self.centralwidget)
self.no_radioButtonGroup1.setObjectName(_fromUtf8("no_radioButtonGroup1"))
self.radioButtonGroup1= QtGui.QButtonGroup(MainWindow)
self.radioButtonGroup1.setObjectName(_fromUtf8("radioButtonGroup1"))
self.radioButtonGroup1.addButton(self.yes_radioButtonGroup1)
self.radioButtonGroup1.addButton(self.no_radioButtonGroup1)
self.yes_radioButtonGroup2 = QtGui.QRadioButton(self.centralwidget)
self.yes_radioButtonGroup2.setObjectName(_fromUtf8("yes_radioButtonGroup2"))
self.no_radioButtonGroup2 = QtGui.QRadioButton(self.centralwidget)
self.no_radioButtonGroup2.setObjectName(_fromUtf8("no_radioButtonGroup2"))
self.radioButtonGroup2= QtGui.QButtonGroup(MainWindow)
self.radioButtonGroup2.setObjectName(_fromUtf8("radioButtonGroup2"))
self.radioButtonGroup2.addButton(self.yes_radioButtonGroup1)
self.radioButtonGroup2.addButton(self.no_radioButtonGroup1)
self.yes_radioButtonGroup3 = QtGui.QRadioButton(self.centralwidget)
self.yes_radioButtonGroup3.setObjectName(_fromUtf8("yes_radioButtonGroup3"))
self.no_radioButtonGroup3 = QtGui.QRadioButton(self.centralwidget)
self.no_radioButtonGroup3.setObjectName(_fromUtf8("no_radioButtonGroup3"))
self.radioButtonGroup3= QtGui.QButtonGroup(MainWindow)
self.radioButtonGroup3.setObjectName(_fromUtf8("radioButtonGroup3"))
self.radioButtonGroup3.addButton(self.yes_radioButtonGroup3)
self.radioButtonGroup3.addButton(self.no_radioButtonGroup3)
self.yes_radioButtonGroup1.toggled(self.on_yes_checked)
# set initial state
self.on_yes_checked(self.yes_radioButtonGroup1.isChecked())
def on_yes_checked(self, checked):
self.yes_radioButtonGroup2.setEnabled(checked)
self.no_radioButtonGroup2.setEnabled(checked)
self.yes_radioButtonGroup3.setEnabled(checked)
self.no_radioButtonGroup3.setEnabled(checked)