Jeilla
@Jeilla

Почему не работает условие вызова функции при выборе радиокнопки?

Создано 3 радиокнопки, объединенных в группу:

self.radio_button_1 = QRadioButton('Выбор 1')
        self.radio_button_2= QRadioButton('Выбор 2')
        self.radio_button_3 = QRadioButton('Выбор 3')
        self.mode_button_group = QButtonGroup()
        self.mode_button_group.addButton(self.radio_button_1)
        self.mode_button_group.addButton(self.radio_button_2)
        self.mode_button_group.addButton(self.radio_button_3)
        self.mode_button_group.buttonClicked.connect(self.mode_radio_clicked)


Раньше при выборе любого из них и нажатия на кнопку вызывалась одна функция, и все работало корректно:
self.bth_vis = QPushButton('Построить', self)
        self.bth_vis.clicked.connect(self.function1)

Теперь нужно чтобы при выборе 1 и 2 радиокнопок вызывалась эта же функция, а при выборе 3 кнопки новая функция.
if self.radio_button_3.isChecked():
                self.bth_vis.clicked.connect(self.function2)
            else:
                self.bth_vis.clicked.connect(self.function1)

или
self.curr_mode = [self.bth_vis.clicked.connect(self.function2) if self.radio_button_3.isChecked() else self.bth_vis.clicked.connect(self.function1) for i in range(len(self.mode_button_group.buttons()))]

Но во всех случаях вызывается только старая функция function1, почему может не работать условие?
  • Вопрос задан
  • 42 просмотра
Решения вопроса 1
seven5674
@seven5674
Старый я уже что бы что-то в себе менять
if self.radio_button_3.isChecked():
                self.bth_vis.clicked.connect(self.function2)
            else:
                self.bth_vis.clicked.connect(self.function1)

Зачем ты тут вешаешь сигналы ? это не так работает
Что меашет в function1 сделать выбор ?
Например
self.bth_vis.clicked.connect(self.make_choice)
.
.
.
def make_choice(sefl):
    if self.radio_button_3.isChecked():
        self.func_1()
    else:
        self.func_2()
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы