Нужна помощь с использованием QCheckBox и QComboBox в циклах

Есть программа на Python с использованием PyQt5.

Имеются 3 QComboBox:

  • ComboFizAkt - уровень физической активности, в котором 4 варианта выбора.
  • ComboCel - цель (хочу похудеть, хочу улучшить фигуру и т.д.), в котором 3 варианта выбора.
  • ComboTrenirovki - кол-во тренировок в неделю, в котором 7 вариантов выбора.

Также имеются 2 QCheckBox, которые отвечают за пол пользователя:

  • PolMuzh - мужской пол
  • PolZhen - женский пол

Хочу кое-что реализовать, нужна помощь.

Грубый пример: Если нажата PolMuzh и в ComboFizAkt выбран пункт "Преобладает физ. труд", вывести print(123)

# текст combobox'ов
self.LvlFizAkt.setText("Уровень физической активности:")   # qlabel
self.ComboFizAkt.setItemText("Сидячий")
self.ComboFizAkt.setItemText("Слабый физ. труд")
self.ComboFizAkt.setItemText("Преобладает физ. труд")
self.ComboFizAkt.setItemText("Тяжёлый физ. труд")
self.ComboFizAkt.setItemText("Очень тяжёлый физ. труд")
self.ViborCeli.setText("Ваша цель:")                       # qlabel
self.ComboCel.setItemText("Ничего не хочу")
self.ComboCel.setItemText("Хочу похудеть")
self.ComboCel.setItemText("Хочу улучшить фигуру")
self.ComboCel.setItemText("Хочу набрать мыш. массу")
self.KolvoTrenirovok.setText("Кол-во тренировок в неделю:") # qlabel
self.ComboTrenirovki.setItemText("0")
self.ComboTrenirovki.setItemText("1")
self.ComboTrenirovki.setItemText("2")
self.ComboTrenirovki.setItemText("3")
self.ComboTrenirovki.setItemText("4")
self.ComboTrenirovki.setItemText("5")
self.ComboTrenirovki.setItemText("6")
self.ComboTrenirovki.setItemText("7+")

# функция, при которой, если PolMuzh включён, PolZhen выключается

self.PolMuzh.stateChanged.connect(self.selectCombo1)
self.PolZhen.stateChanged.connect(self.selectCombo2)

def selectCombo1(self, toggle):
    if toggle == QtCore.Qt.Checked:
        self.PolZhen.setEnabled(False)
    else:
        self.PolZhen.setEnabled(True)


# функция, при которой, если PolZhen включён, PolMuzh выключается
def selectCombo2(self, toggle):
    if toggle == QtCore.Qt.Checked:
        self.PolMuzh.setEnabled(False)
    else:
        self.PolMuzh.setEnabled(True)

Ответы (1 шт):

Автор решения: gil9red

Если нажата PolMuzh и в ComboFizAkt выбран пункт "Преобладает физ. труд", вывести print(123)

При клике PolMuzh проверяйте текущее значение в комбобоксе (это можно сделать через методы: currentText, currentIndex, currentData)

Пример:

def selectCombo1(self, toggle):
    if toggle == QtCore.Qt.Checked:
        self.PolZhen.setEnabled(False)

        if self.ComboFizAkt.currentText() == 'Преобладает физ. труд':
            print(123)
        
    else:
        self.PolZhen.setEnabled(True)
→ Ссылка