Не работает цикл elif
Есть код на Python
Всё работает, кроме последнего elif
Помогите решить проблему
import re
import sys
from PyQt5 import QtCore, QtGui
from PyQt5.QtWidgets import QApplication, QMainWindow
from first_project.project.design_project import Ui_MainWindow
class WayToTheDream(QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__()
self.ui = Ui_MainWindow()
self.setupUi(self)
self.setWindowTitle('Way To The Dream!')
self.setFixedSize(1010, 546)
self.PolZhen.stateChanged.connect(self.calc_logic2)
def calc_logic2(self, toggle):
if toggle == QtCore.Qt.Checked:
self.PolMuzh.setEnabled(False)
list_tren = ['0', '1', '2', '3', '4', '5', '6', '7+']
if self.ComboFizAkt.currentText() == 'Сидячий':
if [self.ComboTrenirovki.currentText() == i for i in list_tren]:
string_vozrast = self.LineVozrast.text()
string_vozrast1 = int("0" + "".join(list(map(str, re.findall(r'\d+', string_vozrast)))))
if 7 <= string_vozrast1 < 112:
string_ves = self.LineVes.text()
string_ves1 = int("0" + "".join(list(map(str, re.findall(r'\d+', string_ves)))))
if 635 > string_ves1 >= 20:
string_rost = self.LineRost.text()
string_rost1 = int("0" + "".join(list(map(str, re.findall(r'\d+', string_rost)))))
if 272 > string_rost1 >= 55:
zhen_rashod = (10 * string_ves1) + (6.25 * string_rost1) - (
5 * string_vozrast1) - 161
self.LineVivodCalc.setText(str(zhen_rashod * 1.2) + ' ккал/сут.')
elif self.ComboFizAkt.currentText() == 'Слабый физ. труд':
if [self.ComboTrenirovki.currentText() == i for i in list_tren]:
string_vozrast = self.LineVozrast.text()
string_vozrast1 = int("0" + "".join(list(map(str, re.findall(r'\d+', string_vozrast)))))
if 7 <= string_vozrast1 < 112:
string_ves = self.LineVes.text()
string_ves1 = int("0" + "".join(list(map(str, re.findall(r'\d+', string_ves)))))
if 635 > string_ves1 >= 20:
string_rost = self.LineRost.text()
string_rost1 = int("0" + "".join(list(map(str, re.findall(r'\d+', string_rost)))))
if 272 > string_rost1 >= 55:
zhen_rashod = (10 * string_ves1) + (6.25 * string_rost1) - (
5 * string_vozrast1) - 161
self.LineVivodCalc.setText(str(zhen_rashod * 1.375) + ' ккал/сут.')
elif self.ComboFizAkt.currentText() == 'Преобладает физ. труд':
if [self.ComboTrenirovki.currentText() == i for i in list_tren]:
string_vozrast = self.LineVozrast.text()
string_vozrast1 = int("0" + "".join(list(map(str, re.findall(r'\d+', string_vozrast)))))
if 7 <= string_vozrast1 < 112:
string_ves = self.LineVes.text()
string_ves1 = int("0" + "".join(list(map(str, re.findall(r'\d+', string_ves)))))
if 635 > string_ves1 >= 20:
string_rost = self.LineRost.text()
string_rost1 = int("0" + "".join(list(map(str, re.findall(r'\d+', string_rost)))))
if 272 > string_rost1 >= 55:
zhen_rashod = (10 * string_ves1) + (6.25 * string_rost1) - (
5 * string_vozrast1) - 161
self.LineVivodCalc.setText(str(zhen_rashod * 1.55) + ' ккал/сут.')
elif self.ComboFizAkt.currentText() == 'Тяжёлый физ. труд':
if [self.ComboTrenirovki.currentText() == i for i in list_tren]:
string_vozrast = self.LineVozrast.text()
string_vozrast1 = int("0" + "".join(list(map(str, re.findall(r'\d+', string_vozrast)))))
if 7 <= string_vozrast1 < 112:
string_ves = self.LineVes.text()
string_ves1 = int("0" + "".join(list(map(str, re.findall(r'\d+', string_ves)))))
if 635 > string_ves1 >= 20:
string_rost = self.LineRost.text()
string_rost1 = int("0" + "".join(list(map(str, re.findall(r'\d+', string_rost)))))
if 272 > string_rost1 >= 55:
zhen_rashod = (10 * string_ves1) + (6.25 * string_rost1) - (
5 * string_vozrast1) - 161
self.LineVivodCalc.setText(str(zhen_rashod * 1.725) + ' ккал/сут.')
elif self.ComboFizAkt.currentText() == 'Очень тяжёлый физ. труд':
if [self.ComboTrenirovki.currentText() == i for i in list_tren]:
string_vozrast = self.LineVozrast.text()
string_vozrast1 = int("0" + "".join(list(map(str, re.findall(r'\d+', string_vozrast)))))
if 7 <= string_vozrast1 < 112:
string_ves = self.LineVes.text()
string_ves1 = int("0" + "".join(list(map(str, re.findall(r'\d+', string_ves)))))
if 635 > string_ves1 >= 20:
string_rost = self.LineRost.text()
string_rost1 = int("0" + "".join(list(map(str, re.findall(r'\d+', string_rost)))))
if 272 > string_rost1 >= 55:
zhen_rashod = (10 * string_ves1) + (6.25 * string_rost1) - (
5 * string_vozrast1) - 161
self.LineVivodCalc.setText(str(zhen_rashod * 1.9) + ' ккал/сут.')
elif 7 > string_vozrast1 > 112 or 635 < string_ves1 < 20 or 272 < string_rost1 < 55:
abshibka = 'Данные введены неверно!'
self.LineVivodCalc.setText(abshibka)
else:
self.PolMuzh.setEnabled(True)
self.LineVivodCalc.clear()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = WayToTheDream()
ex.show()
sys.exit(app.exec_())
- ComboFizAkt -
ComboBox, в котором несколько вариантов выбора - LineVozrast, LineVes, LineRost -
lineedit, в которые вводятся данные - LineVivodCalc -
lineeditв котором выводятся данные
design_project.py:
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(1010, 546)
MainWindow.setStyleSheet("background-color: #F0F0F0;")
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.ViborPola = QtWidgets.QLabel(self.centralwidget)
self.ViborPola.setGeometry(QtCore.QRect(790, 320, 81, 51))
self.ViborPola.setObjectName("ViborPola")
self.PolMuzh = QtWidgets.QCheckBox(self.centralwidget)
self.PolMuzh.setGeometry(QtCore.QRect(880, 320, 70, 17))
self.PolMuzh.setObjectName("PolMuzh")
self.PolZhen = QtWidgets.QCheckBox(self.centralwidget)
self.PolZhen.setGeometry(QtCore.QRect(880, 350, 70, 17))
self.PolZhen.setObjectName("PolZhen")
self.UkazatVozrast = QtWidgets.QLabel(self.centralwidget)
self.UkazatVozrast.setGeometry(QtCore.QRect(790, 150, 81, 51))
self.UkazatVozrast.setObjectName("UkazatVozrast")
self.LineVozrast = QtWidgets.QLineEdit(self.centralwidget)
self.LineVozrast.setGeometry(QtCore.QRect(880, 150, 71, 51))
self.LineVozrast.setObjectName("LineVozrast")
self.UkazatVes = QtWidgets.QLabel(self.centralwidget)
self.UkazatVes.setGeometry(QtCore.QRect(790, 200, 81, 51))
self.UkazatVes.setObjectName("UkazatVes")
self.LineVes = QtWidgets.QLineEdit(self.centralwidget)
self.LineVes.setGeometry(QtCore.QRect(880, 200, 71, 51))
self.LineVes.setObjectName("LineVes")
self.UkazatRost = QtWidgets.QLabel(self.centralwidget)
self.UkazatRost.setGeometry(QtCore.QRect(790, 250, 81, 51))
self.UkazatRost.setObjectName("UkazatRost")
self.LineRost = QtWidgets.QLineEdit(self.centralwidget)
self.LineRost.setGeometry(QtCore.QRect(880, 250, 71, 51))
self.LineRost.setObjectName("LineRost")
self.LvlFizAkt = QtWidgets.QLabel(self.centralwidget)
self.LvlFizAkt.setGeometry(QtCore.QRect(780, 50, 171, 21))
self.LvlFizAkt.setObjectName("LvlFizAkt")
self.ComboFizAkt = QtWidgets.QComboBox(self.centralwidget)
self.ComboFizAkt.setGeometry(QtCore.QRect(780, 70, 171, 22))
self.ComboFizAkt.setObjectName("ComboFizAkt")
self.ComboFizAkt.addItem("")
self.ComboFizAkt.addItem("")
self.ComboFizAkt.addItem("")
self.ComboFizAkt.addItem("")
self.ComboFizAkt.addItem("")
self.KolvoTrenirovok = QtWidgets.QLabel(self.centralwidget)
self.KolvoTrenirovok.setGeometry(QtCore.QRect(780, 100, 171, 21))
self.KolvoTrenirovok.setObjectName("KolvoTrenirovok")
self.ComboTrenirovki = QtWidgets.QComboBox(self.centralwidget)
self.ComboTrenirovki.setGeometry(QtCore.QRect(780, 120, 171, 22))
self.ComboTrenirovki.setObjectName("ComboTrenirovki")
self.ComboTrenirovki.addItem("")
self.ComboTrenirovki.addItem("")
self.ComboTrenirovki.addItem("")
self.ComboTrenirovki.addItem("")
self.ComboTrenirovki.addItem("")
self.ComboTrenirovki.addItem("")
self.ComboTrenirovki.addItem("")
self.ComboTrenirovki.addItem("")
self.LineVivodCalc = QtWidgets.QLineEdit(self.centralwidget)
self.LineVivodCalc.setGeometry(QtCore.QRect(780, 370, 171, 91))
self.LineVivodCalc.setObjectName("LineVivodCalc")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 1010, 21))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.ViborPola.setText(_translate("MainWindow", "Пол"))
self.PolMuzh.setText(_translate("MainWindow", "Мужской"))
self.PolZhen.setText(_translate("MainWindow", "Женский"))
self.UkazatVozrast.setText(_translate("MainWindow", "Возраст"))
self.UkazatVes.setText(_translate("MainWindow", "Вес"))
self.UkazatRost.setText(_translate("MainWindow", "Рост"))
self.LvlFizAkt.setText(_translate("MainWindow", "Уровень физической активности:"))
self.ComboFizAkt.setItemText(0, _translate("MainWindow", "Сидячий"))
self.ComboFizAkt.setItemText(1, _translate("MainWindow", "Слабый физ. труд"))
self.ComboFizAkt.setItemText(2, _translate("MainWindow", "Преобладает физ. труд"))
self.ComboFizAkt.setItemText(3, _translate("MainWindow", "Тяжёлый физ. труд"))
self.ComboFizAkt.setItemText(4, _translate("MainWindow", "Очень тяжёлый физ. труд"))
self.KolvoTrenirovok.setText(_translate("MainWindow", "Кол-во тренировок в неделю:"))
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Проверьте ваши условия на корректность!
Я не понимаю, что значит: "если ввести неверные данные, то в LineVivodCalc ничего не выведет".
import re
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow
#from first_project.project.design_project import Ui_MainWindow
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(1010, 546)
MainWindow.setStyleSheet("background-color: #F0F0F0;")
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.ViborPola = QtWidgets.QLabel(self.centralwidget)
self.ViborPola.setGeometry(QtCore.QRect(790, 320, 81, 51))
self.ViborPola.setObjectName("ViborPola")
self.PolMuzh = QtWidgets.QCheckBox(self.centralwidget)
self.PolMuzh.setGeometry(QtCore.QRect(880, 320, 70, 17))
self.PolMuzh.setObjectName("PolMuzh")
self.PolZhen = QtWidgets.QCheckBox(self.centralwidget)
self.PolZhen.setGeometry(QtCore.QRect(880, 350, 70, 17))
self.PolZhen.setObjectName("PolZhen")
self.UkazatVozrast = QtWidgets.QLabel(self.centralwidget)
self.UkazatVozrast.setGeometry(QtCore.QRect(790, 150, 81, 51))
self.UkazatVozrast.setObjectName("UkazatVozrast")
self.LineVozrast = QtWidgets.QLineEdit(self.centralwidget)
self.LineVozrast.setGeometry(QtCore.QRect(880, 150, 71, 51))
self.LineVozrast.setObjectName("LineVozrast")
self.UkazatVes = QtWidgets.QLabel(self.centralwidget)
self.UkazatVes.setGeometry(QtCore.QRect(790, 200, 81, 51))
self.UkazatVes.setObjectName("UkazatVes")
self.LineVes = QtWidgets.QLineEdit(self.centralwidget)
self.LineVes.setGeometry(QtCore.QRect(880, 200, 71, 51))
self.LineVes.setObjectName("LineVes")
self.UkazatRost = QtWidgets.QLabel(self.centralwidget)
self.UkazatRost.setGeometry(QtCore.QRect(790, 250, 81, 51))
self.UkazatRost.setObjectName("UkazatRost")
self.LineRost = QtWidgets.QLineEdit(self.centralwidget)
self.LineRost.setGeometry(QtCore.QRect(880, 250, 71, 51))
self.LineRost.setObjectName("LineRost")
self.LvlFizAkt = QtWidgets.QLabel(self.centralwidget)
self.LvlFizAkt.setGeometry(QtCore.QRect(780, 50, 171, 21))
self.LvlFizAkt.setObjectName("LvlFizAkt")
self.ComboFizAkt = QtWidgets.QComboBox(self.centralwidget)
self.ComboFizAkt.setGeometry(QtCore.QRect(780, 70, 171, 22))
self.ComboFizAkt.setObjectName("ComboFizAkt")
self.ComboFizAkt.addItem("")
self.ComboFizAkt.addItem("")
self.ComboFizAkt.addItem("")
self.ComboFizAkt.addItem("")
self.ComboFizAkt.addItem("")
self.KolvoTrenirovok = QtWidgets.QLabel(self.centralwidget)
self.KolvoTrenirovok.setGeometry(QtCore.QRect(780, 100, 171, 21))
self.KolvoTrenirovok.setObjectName("KolvoTrenirovok")
self.ComboTrenirovki = QtWidgets.QComboBox(self.centralwidget)
self.ComboTrenirovki.setGeometry(QtCore.QRect(780, 120, 171, 22))
self.ComboTrenirovki.setObjectName("ComboTrenirovki")
'''
# убрал
self.ComboTrenirovki.addItem("")
self.ComboTrenirovki.addItem("")
self.ComboTrenirovki.addItem("")
self.ComboTrenirovki.addItem("")
self.ComboTrenirovki.addItem("")
self.ComboTrenirovki.addItem("")
self.ComboTrenirovki.addItem("")
self.ComboTrenirovki.addItem("")
'''
self.LineVivodCalc = QtWidgets.QLineEdit(self.centralwidget)
self.LineVivodCalc.setGeometry(QtCore.QRect(780, 370, 171, 91))
self.LineVivodCalc.setObjectName("LineVivodCalc")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 1010, 21))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.ViborPola.setText(_translate("MainWindow", "Пол"))
self.PolMuzh.setText(_translate("MainWindow", "Мужской"))
self.PolZhen.setText(_translate("MainWindow", "Женский"))
self.UkazatVozrast.setText(_translate("MainWindow", "Возраст"))
self.UkazatVes.setText(_translate("MainWindow", "Вес"))
self.UkazatRost.setText(_translate("MainWindow", "Рост"))
self.LvlFizAkt.setText(_translate("MainWindow", "Уровень физической активности:"))
self.ComboFizAkt.setItemText(0, _translate("MainWindow", "Сидячий"))
self.ComboFizAkt.setItemText(1, _translate("MainWindow", "Слабый физ. труд"))
self.ComboFizAkt.setItemText(2, _translate("MainWindow", "Преобладает физ. труд"))
self.ComboFizAkt.setItemText(3, _translate("MainWindow", "Тяжёлый физ. труд"))
self.ComboFizAkt.setItemText(4, _translate("MainWindow", "Очень тяжёлый физ. труд"))
self.KolvoTrenirovok.setText(_translate("MainWindow", "Кол-во тренировок в неделю:"))
class WayToTheDream(QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__()
self.ui = Ui_MainWindow()
self.setupUi(self)
self.setWindowTitle('Way To The Dream!')
self.setFixedSize(1010, 546)
#+++
self.list_tren = ['0', '1', '2', '3', '4', '5', '6', '7+'] # +++
self.ComboTrenirovki.addItems(self.list_tren) # +++
self.PolZhen.stateChanged.connect(self.calc_logic2)
self.PolMuzh.stateChanged.connect(self.calc_logic1) # +++
def calc_logic1(self, toggle): # +++
if toggle == QtCore.Qt.Checked:
self.PolZhen.setEnabled(False)
msg = QtWidgets.QMessageBox.information(
self, "Информационное сообщение", "У вас нет логики расчетов для мужчин."
)
else:
self.PolZhen.setEnabled(True)
self.LineVivodCalc.clear()
def calc_logic2(self, toggle):
if toggle == QtCore.Qt.Checked:
self.PolMuzh.setEnabled(False)
# list_tren = ['0', '1', '2', '3', '4', '5', '6', '7+'] # ---
if self.ComboFizAkt.currentText() == 'Сидячий':
if [self.ComboTrenirovki.currentText() == i for i in self.list_tren]: # + self.
string_vozrast = self.LineVozrast.text()
string_vozrast1 = int("0" + "".join(list(map(str, re.findall(r'\d+', string_vozrast)))))
if 7 <= string_vozrast1 < 112:
string_ves = self.LineVes.text()
string_ves1 = int("0" + "".join(list(map(str, re.findall(r'\d+', string_ves)))))
if 635 > string_ves1 >= 20:
string_rost = self.LineRost.text()
string_rost1 = int("0" + "".join(list(map(str, re.findall(r'\d+', string_rost)))))
if 272 > string_rost1 >= 55:
zhen_rashod = (10 * string_ves1) + (6.25 * string_rost1) - (
5 * string_vozrast1) - 161
self.LineVivodCalc.setText(str(zhen_rashod * 1.2) + ' ккал/сут.')
elif self.ComboFizAkt.currentText() == 'Слабый физ. труд':
if [self.ComboTrenirovki.currentText() == i for i in self.list_tren]:
string_vozrast = self.LineVozrast.text()
string_vozrast1 = int("0" + "".join(list(map(str, re.findall(r'\d+', string_vozrast)))))
if 7 <= string_vozrast1 < 112:
string_ves = self.LineVes.text()
string_ves1 = int("0" + "".join(list(map(str, re.findall(r'\d+', string_ves)))))
if 635 > string_ves1 >= 20:
string_rost = self.LineRost.text()
string_rost1 = int("0" + "".join(list(map(str, re.findall(r'\d+', string_rost)))))
if 272 > string_rost1 >= 55:
zhen_rashod = (10 * string_ves1) + (6.25 * string_rost1) - (
5 * string_vozrast1) - 161
self.LineVivodCalc.setText(str(zhen_rashod * 1.375) + ' ккал/сут.')
elif self.ComboFizAkt.currentText() == 'Преобладает физ. труд':
if [self.ComboTrenirovki.currentText() == i for i in self.list_tren]:
string_vozrast = self.LineVozrast.text()
string_vozrast1 = int("0" + "".join(list(map(str, re.findall(r'\d+', string_vozrast)))))
if 7 <= string_vozrast1 < 112:
string_ves = self.LineVes.text()
string_ves1 = int("0" + "".join(list(map(str, re.findall(r'\d+', string_ves)))))
if 635 > string_ves1 >= 20:
string_rost = self.LineRost.text()
string_rost1 = int("0" + "".join(list(map(str, re.findall(r'\d+', string_rost)))))
if 272 > string_rost1 >= 55:
zhen_rashod = (10 * string_ves1) + (6.25 * string_rost1) - (
5 * string_vozrast1) - 161
self.LineVivodCalc.setText(str(zhen_rashod * 1.55) + ' ккал/сут.')
elif self.ComboFizAkt.currentText() == 'Тяжёлый физ. труд':
if [self.ComboTrenirovki.currentText() == i for i in self.list_tren]:
string_vozrast = self.LineVozrast.text()
string_vozrast1 = int("0" + "".join(list(map(str, re.findall(r'\d+', string_vozrast)))))
if 7 <= string_vozrast1 < 112:
string_ves = self.LineVes.text()
string_ves1 = int("0" + "".join(list(map(str, re.findall(r'\d+', string_ves)))))
if 635 > string_ves1 >= 20:
string_rost = self.LineRost.text()
string_rost1 = int("0" + "".join(list(map(str, re.findall(r'\d+', string_rost)))))
if 272 > string_rost1 >= 55:
zhen_rashod = (10 * string_ves1) + (6.25 * string_rost1) - (
5 * string_vozrast1) - 161
self.LineVivodCalc.setText(str(zhen_rashod * 1.725) + ' ккал/сут.')
elif self.ComboFizAkt.currentText() == 'Очень тяжёлый физ. труд':
if [self.ComboTrenirovki.currentText() == i for i in self.list_tren]:
string_vozrast = self.LineVozrast.text()
string_vozrast1 = int("0" + "".join(list(map(str, re.findall(r'\d+', string_vozrast)))))
if 7 <= string_vozrast1 < 112:
string_ves = self.LineVes.text()
string_ves1 = int("0" + "".join(list(map(str, re.findall(r'\d+', string_ves)))))
if 635 > string_ves1 >= 20:
string_rost = self.LineRost.text()
string_rost1 = int("0" + "".join(list(map(str, re.findall(r'\d+', string_rost)))))
if 272 > string_rost1 >= 55:
zhen_rashod = (10 * string_ves1) + (6.25 * string_rost1) - (
5 * string_vozrast1) - 161
self.LineVivodCalc.setText(str(zhen_rashod * 1.9) + ' ккал/сут.')
### эти условия всегда ложные !!!
elif 7 > string_vozrast1 > 112 or \
635 < string_ves1 < 20 or \
272 < string_rost1 < 55:
abshibka = 'Данные введены неверно!'
self.LineVivodCalc.setText(abshibka)
else:
self.PolMuzh.setEnabled(True)
self.LineVivodCalc.clear()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = WayToTheDream()
ex.show()
sys.exit(app.exec_())
