Если QLineEdit пуст, то приложение крашится
Код на Python, с использованием библиотеки PyQt5. Написал калькулятор суточного расхода калорий, всё работает, но есть проблема.
Если QLineEdit или QLineEdit'ы пусты, то приложение крашится.
Прошу помочь
main.py:
import re
import sys
from PyQt5 import QtCore, QtGui
from PyQt5.QtWidgets import QApplication, QMainWindow
from design_project import Ui_MainWindow
OLDEST_HUMAN = 112
MIN_AGE_FOR_CALC = 7
GREATEST_WEIGHT = 635
MIN_WEIGHT_FOR_CALC = 20
HIGHEST_GROWTH = 272
LOWEST_GROWTH = 55
MAX_EXP = 14241
MIN_EXP = 417
class WayToTheDream(QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
self.setWindowTitle('Way To The Dream!')
self.setFixedSize(1010, 763)
# условия для запуска | калькулятор
self.LineVivodCalc.setDisabled(True)
self.PolMuzh.stateChanged.connect(self.calculating_if_polmuzh)
self.PolZhen.stateChanged.connect(self.calculating_if_polzhen)
# лимит на количество символов в лайнэдитах + возможность вводить только цифры
self.LineRost.setValidator(QtGui.QIntValidator(1, 999))
self.LineVes.setValidator(QtGui.QIntValidator(1, 999))
self.LineVozrast.setValidator(QtGui.QIntValidator(1, 999))
self.lineEdit.setValidator(QtGui.QIntValidator(1, 99999))
# проверка на соблюдение условий В КАЛЬКУЛЯТОРЕ СУТОЧНОГО РАСХОДА КАЛОРИЙ если пользователь выбрал МУЖСКОЙ ПОЛ
def checking_for_a_condition_polmuzh(self):
string_vozrast1 = int("".join(list(map(str, re.findall(r'\d+', self.LineVozrast.text())))))
if MIN_AGE_FOR_CALC <= string_vozrast1 <= OLDEST_HUMAN:
string_ves1 = int("".join(list(map(str, re.findall(r'\d+', self.LineVes.text())))))
if GREATEST_WEIGHT >= string_ves1 >= MIN_WEIGHT_FOR_CALC:
string_rost1 = int("".join(list(map(str, re.findall(r'\d+', self.LineRost.text())))))
if HIGHEST_GROWTH >= string_rost1 >= LOWEST_GROWTH:
return 5 + (10 * string_ves1) + (6.25 * string_rost1) - (
5 * string_vozrast1)
# проверка на соблюдение условий В КАЛЬКУЛЯТОРЕ СУТОЧНОГО РАСХОДА КАЛОРИЙ если пользователь выбрал ЖЕНСКИЙ ПОЛ
def checking_for_a_condition_polzhen(self):
string_vozrast1 = int("".join(list(map(str, re.findall(r'\d+', self.LineVozrast.text())))))
if MIN_AGE_FOR_CALC <= string_vozrast1 <= OLDEST_HUMAN:
string_ves1 = int("".join(list(map(str, re.findall(r'\d+', self.LineVes.text())))))
if GREATEST_WEIGHT >= string_ves1 >= MIN_WEIGHT_FOR_CALC:
string_rost1 = int("".join(list(map(str, re.findall(r'\d+', self.LineRost.text())))))
if HIGHEST_GROWTH >= string_rost1 >= LOWEST_GROWTH:
return (10 * string_ves1) + (6.25 * string_rost1) - (
5 * string_vozrast1) - 161
# вывод суточного расхода калорий если пользователь выбрал МУЖСКОЙ ПОЛ
def calculating_if_polmuzh(self, toggle):
if toggle == QtCore.Qt.Checked:
self.PolZhen.setEnabled(False)
if self.checking_for_a_condition_polmuzh() is None:
self.LineVivodCalc.clear()
elif self.ComboFizAkt.currentText() == 'Сидячий':
self.LineVivodCalc.setText(str(self.checking_for_a_condition_polmuzh() * 1.2) + ' ккал/сут.')
elif self.ComboFizAkt.currentText() == 'Слабый физ. труд':
self.LineVivodCalc.setText(str(self.checking_for_a_condition_polmuzh() * 1.375) + ' ккал/сут.')
elif self.ComboFizAkt.currentText() == 'Преобладает физ. труд':
self.LineVivodCalc.setText(str(self.checking_for_a_condition_polmuzh() * 1.55) + ' ккал/сут.')
elif self.ComboFizAkt.currentText() == 'Тяжёлый физ. труд':
self.LineVivodCalc.setText(str(self.checking_for_a_condition_polmuzh() * 1.725) + ' ккал/сут.')
elif self.ComboFizAkt.currentText() == 'Очень тяжёлый физ. труд':
self.LineVivodCalc.setText(str(self.checking_for_a_condition_polmuzh() * 1.9) + ' ккал/сут.')
else:
self.PolZhen.setEnabled(True)
self.LineVivodCalc.clear()
# вывод суточного расхода калорий если пользователь выбрал ЖЕНСКИЙ ПОЛ
def calculating_if_polzhen(self, toggle):
if toggle == QtCore.Qt.Checked:
self.PolMuzh.setEnabled(False)
if self.checking_for_a_condition_polzhen() is None:
self.LineVivodCalc.clear()
elif self.ComboFizAkt.currentText() == 'Сидячий':
self.LineVivodCalc.setText(str(self.checking_for_a_condition_polzhen() * 1.2) + ' ккал/сут.')
elif self.ComboFizAkt.currentText() == 'Слабый физ. труд':
self.LineVivodCalc.setText(str(self.checking_for_a_condition_polzhen() * 1.375) + ' ккал/сут.')
elif self.ComboFizAkt.currentText() == 'Преобладает физ. труд':
self.LineVivodCalc.setText(str(self.checking_for_a_condition_polzhen() * 1.55) + ' ккал/сут.')
elif self.ComboFizAkt.currentText() == 'Тяжёлый физ. труд':
self.LineVivodCalc.setText(str(self.checking_for_a_condition_polzhen() * 1.725) + ' ккал/сут.')
elif self.ComboFizAkt.currentText() == 'Очень тяжёлый физ. труд':
self.LineVivodCalc.setText(str(self.checking_for_a_condition_polzhen() * 1.9) + ' ккал/сут.')
else:
self.PolMuzh.setEnabled(True)
self.LineVivodCalc.clear()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = WayToTheDream()
ex.show()
sys.exit(app.exec_())
design_project.py:
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(1010, 763)
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", "Кол-во тренировок в неделю:"))
self.ComboTrenirovki.setItemText(0, _translate("MainWindow", "0"))
self.ComboTrenirovki.setItemText(1, _translate("MainWindow", "1"))
self.ComboTrenirovki.setItemText(2, _translate("MainWindow", "2"))
self.ComboTrenirovki.setItemText(3, _translate("MainWindow", "3"))
self.ComboTrenirovki.setItemText(4, _translate("MainWindow", "4"))
self.ComboTrenirovki.setItemText(5, _translate("MainWindow", "5"))
self.ComboTrenirovki.setItemText(6, _translate("MainWindow", "6"))
self.ComboTrenirovki.setItemText(7, _translate("MainWindow", "7+"))
P.S.
Добавлена проверка, но всё равно происходит ошибка:
def calculating_if_polmuzh(self, toggle):
if toggle == QtCore.Qt.Checked:
self.PolZhen.setEnabled(False)
if self.checking_for_a_condition_polmuzh() is None:
self.LineVivodCalc.clear()
if not self.LineVozrast.text(): # начало
self.LineVivodCalc.clear()
if not self.LineVes.text():
self.LineVivodCalc.clear()
if not self.LineRost.text():
self.LineVivodCalc.clear() # конец
elif self.ComboFizAkt.currentText() == 'Сидячий':
self.LineVivodCalc.setText(str(self.checking_for_a_condition_polmuzh() * 1.2) + ' ккал/сут.')
elif self.ComboFizAkt.currentText() == 'Слабый физ. труд':
self.LineVivodCalc.setText(str(self.checking_for_a_condition_polmuzh() * 1.375) + ' ккал/сут.')
elif self.ComboFizAkt.currentText() == 'Преобладает физ. труд':
self.LineVivodCalc.setText(str(self.checking_for_a_condition_polmuzh() * 1.55) + ' ккал/сут.')
elif self.ComboFizAkt.currentText() == 'Тяжёлый физ. труд':
self.LineVivodCalc.setText(str(self.checking_for_a_condition_polmuzh() * 1.725) + ' ккал/сут.')
elif self.ComboFizAkt.currentText() == 'Очень тяжёлый физ. труд':
self.LineVivodCalc.setText(str(self.checking_for_a_condition_polmuzh() * 1.9) + ' ккал/сут.')
else:
self.PolZhen.setEnabled(True)
self.LineVivodCalc.clear()
Ответы (3 шт):
Вам надо вставить проверку, например так:
...
def checking_for_a_condition_polmuzh(self):
if not self.LineVozrast.text(): # +
msg = QtWidgets.QMessageBox.information( # +
self, "Внимание!", "Введите какие-нибудь данные.") # +
return # +
...
Update
я же написал как пример, а вам видимо надо проверить все QLineEdit'ы. Проверьте так:
...
def checking_for_a_condition_polmuzh(self):
if (not self.LineVozrast.text()) or \
(not self.LineVes.text()) or \
(not self.LineRost.text()) :
msg = QtWidgets.QMessageBox.information(
self, "Внимание!", "Введите какие-нибудь данные.")
return
...
Update 2
Я добавил для вас некоторую проверку, а также немного упорядочил ваши методы calculating_if_polmuzh и calculating_if_polzhen , попробуйте:
import sys
import re
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow
#from design_project import Ui_MainWindow
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(1010, 763)
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", "Кол-во тренировок в неделю:"))
self.ComboTrenirovki.setItemText(0, _translate("MainWindow", "0"))
self.ComboTrenirovki.setItemText(1, _translate("MainWindow", "1"))
self.ComboTrenirovki.setItemText(2, _translate("MainWindow", "2"))
self.ComboTrenirovki.setItemText(3, _translate("MainWindow", "3"))
self.ComboTrenirovki.setItemText(4, _translate("MainWindow", "4"))
self.ComboTrenirovki.setItemText(5, _translate("MainWindow", "5"))
self.ComboTrenirovki.setItemText(6, _translate("MainWindow", "6"))
self.ComboTrenirovki.setItemText(7, _translate("MainWindow", "7+"))
OLDEST_HUMAN = 112
MIN_AGE_FOR_CALC = 7
GREATEST_WEIGHT = 635
MIN_WEIGHT_FOR_CALC = 20
HIGHEST_GROWTH = 272
LOWEST_GROWTH = 55
MAX_EXP = 14241
MIN_EXP = 417
class WayToTheDream(QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
self.setWindowTitle('Way To The Dream!')
self.setFixedSize(1010, 763)
# условия для запуска | калькулятор
self.LineVivodCalc.setDisabled(True)
self.PolMuzh.stateChanged.connect(self.calculating_if_polmuzh)
self.PolZhen.stateChanged.connect(self.calculating_if_polzhen)
# лимит на количество символов в лайнэдитах + возможность вводить только цифры
self.LineRost.setValidator(QtGui.QIntValidator(1, 999))
self.LineVes.setValidator(QtGui.QIntValidator(1, 999))
self.LineVozrast.setValidator(QtGui.QIntValidator(1, 999))
# ? self.lineEdit.setValidator(QtGui.QIntValidator(1, 99999)) # ????????????????
def checking_for_a_condition_polmuzh(self):
""" проверка на соблюдение условий В КАЛЬКУЛЯТОРЕ СРК, МУЖСКОЙ ПОЛ """
# +++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
if (not self.LineVozrast.text()) or \
(not self.LineVes.text()) or \
(not self.LineRost.text()) :
msg = QtWidgets.QMessageBox.information(
self, "Внимание!", "Введите Возраст, Вес и Рост.")
return False
# +++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
string_vozrast1 = int("".join(list(map(str, re.findall(r'\d+', self.LineVozrast.text())))))
if MIN_AGE_FOR_CALC <= string_vozrast1 <= OLDEST_HUMAN:
string_ves1 = int("".join(list(map(str, re.findall(r'\d+', self.LineVes.text())))))
if GREATEST_WEIGHT >= string_ves1 >= MIN_WEIGHT_FOR_CALC:
string_rost1 = int("".join(list(map(str, re.findall(r'\d+', self.LineRost.text())))))
if HIGHEST_GROWTH >= string_rost1 >= LOWEST_GROWTH:
return 5 + (10 * string_ves1) + (6.25 * string_rost1) - (
5 * string_vozrast1)
return False # +
def checking_for_a_condition_polzhen(self):
""" проверка на соблюдение условий В КАЛЬКУЛЯТОРЕ СРК, ЖЕНСКИЙ ПОЛ """
# +++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
if (not self.LineVozrast.text()) or \
(not self.LineVes.text()) or \
(not self.LineRost.text()) :
msg = QtWidgets.QMessageBox.information(
self, "Внимание!", "Введите Возраст, Вес и Рост.")
return False
# +++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
string_vozrast1 = int("".join(list(map(str, re.findall(r'\d+', self.LineVozrast.text())))))
if MIN_AGE_FOR_CALC <= string_vozrast1 <= OLDEST_HUMAN:
string_ves1 = int("".join(list(map(str, re.findall(r'\d+', self.LineVes.text())))))
if GREATEST_WEIGHT >= string_ves1 >= MIN_WEIGHT_FOR_CALC:
string_rost1 = int("".join(list(map(str, re.findall(r'\d+', self.LineRost.text())))))
if HIGHEST_GROWTH >= string_rost1 >= LOWEST_GROWTH:
return (10 * string_ves1) + (6.25 * string_rost1) - (
5 * string_vozrast1) - 161
return False # +
# вывод суточного расхода калорий если пользователь выбрал МУЖСКОЙ ПОЛ
def calculating_if_polmuzh(self, toggle):
if toggle == QtCore.Qt.Checked:
self.PolZhen.setEnabled(False)
rez_calc_polmuzh = self.checking_for_a_condition_polmuzh()
if not rez_calc_polmuzh:
# self.LineVivodCalc.clear()
self.LineVivodCalc.setText(f'Результата: HET.')
return # Если резельтата нет, то дальше ничего не делаем
comboFizAkt = self.ComboFizAkt.currentText()
if comboFizAkt == 'Сидячий':
rez = rez_calc_polmuzh * 1.2
elif comboFizAkt == 'Слабый физ. труд':
rez = rez_calc_polmuzh * 1.375
elif comboFizAkt == 'Преобладает физ. труд':
rez = rez_calc_polmuzh * 1.55
elif comboFizAkt == 'Тяжёлый физ. труд':
rez = rez_calc_polmuzh * 1.725
elif comboFizAkt == 'Очень тяжёлый физ. труд':
rez = rez_calc_polmuzh * 1.9
self.LineVivodCalc.setText(f'Результат: {rez:>8.2f} ккал/сут.')
else:
self.PolZhen.setEnabled(True)
self.LineVivodCalc.clear()
# вывод суточного расхода калорий если пользователь выбрал ЖЕНСКИЙ ПОЛ
def calculating_if_polzhen(self, toggle):
if toggle == QtCore.Qt.Checked:
self.PolMuzh.setEnabled(False)
rez_calc_polmuzh = self.checking_for_a_condition_polzhen()
if not rez_calc_polmuzh:
# self.LineVivodCalc.clear()
self.LineVivodCalc.setText(f'Результата: HET.')
return # Если резельтата нет, то дальше ничего не делаем
comboFizAkt = self.ComboFizAkt.currentText()
if comboFizAkt == 'Сидячий':
rez = rez_calc_polmuzh * 1.2
elif comboFizAkt == 'Слабый физ. труд':
rez = rez_calc_polmuzh * 1.375
elif comboFizAkt == 'Преобладает физ. труд':
rez = rez_calc_polmuzh * 1.55
elif comboFizAkt == 'Тяжёлый физ. труд':
rez = rez_calc_polmuzh * 1.725
elif comboFizAkt == 'Очень тяжёлый физ. труд':
rez = rez_calc_polmuzh * 1.9
self.LineVivodCalc.setText(f'Результат: {rez:>8.2f} ккал/сут.')
else:
self.PolMuzh.setEnabled(True)
self.LineVivodCalc.clear()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = WayToTheDream()
ex.show()
sys.exit(app.exec_())
Ошибка из-за того, что в int у вас была пустая строка
string_vozrast1 = int("".join(list(map(str, re.findall(r'\d+', self.LineVozrast.text()))))) ValueError: invalid literal for int() with base 10: ''
У вас тот код повторяется и лучше его в функцию поместить примерно так:
Кст, у вас в функции излишек кода. Смотрите, findall и так возвращает список строку, поэтому map с str излишен, поэтому убрал лишнее
def get_int(line_edit) -> int:
try:
return int("".join(re.findall(r'\d+', line_edit.text())))
except:
return -1
Тогда, с функцией код станет таким:
string_vozrast1 = get_int(self.LineVozrast)
С куском кода:
# проверка на соблюдение условий В КАЛЬКУЛЯТОРЕ СУТОЧНОГО РАСХОДА КАЛОРИЙ если пользователь выбрал МУЖСКОЙ ПОЛ
def checking_for_a_condition_polmuzh(self):
string_vozrast1 = get_int(self.LineVozrast)
# ^^^^^^^^^^^^^^^^^^^^^^^^^
if MIN_AGE_FOR_CALC <= string_vozrast1 <= OLDEST_HUMAN:
string_ves1 = get_int(self.LineVes)
# ^^^^^^^^^^^^^^^^^^^^^^
if GREATEST_WEIGHT >= string_ves1 >= MIN_WEIGHT_FOR_CALC:
string_rost1 = get_int(self.LineRost)
# ^^^^^^^^^^^^^^^^^^^^^^^^^
if HIGHEST_GROWTH >= string_rost1 >= LOWEST_GROWTH:
return 5 + (10 * string_ves1) + (6.25 * string_rost1) - (
5 * string_vozrast1)
# проверка на соблюдение условий В КАЛЬКУЛЯТОРЕ СУТОЧНОГО РАСХОДА КАЛОРИЙ если пользователь выбрал ЖЕНСКИЙ ПОЛ
def checking_for_a_condition_polzhen(self):
string_vozrast1 = get_int(self.LineVozrast)
# ^^^^^^^^^^^^^^^^^^^^^^^^^
if MIN_AGE_FOR_CALC <= string_vozrast1 <= OLDEST_HUMAN:
string_ves1 = get_int(self.LineVes)
# ^^^^^^^^^^^^^^^^^^^^^^^^^
if GREATEST_WEIGHT >= string_ves1 >= MIN_WEIGHT_FOR_CALC:
string_rost1 = get_int(self.LineRost)
# ^^^^^^^^^^^^^^^^^^^^^^^
if HIGHEST_GROWTH >= string_rost1 >= LOWEST_GROWTH:
return (10 * string_ves1) + (6.25 * string_rost1) - (
5 * string_vozrast1) - 161
Весь main.py:
import re
import sys
from PyQt5 import QtCore, QtGui
from PyQt5.QtWidgets import QApplication, QMainWindow
from design_project import Ui_MainWindow
def get_int(line_edit) -> int:
try:
return int("".join(re.findall(r'\d+', line_edit.text())))
except:
return -1
OLDEST_HUMAN = 112
MIN_AGE_FOR_CALC = 7
GREATEST_WEIGHT = 635
MIN_WEIGHT_FOR_CALC = 20
HIGHEST_GROWTH = 272
LOWEST_GROWTH = 55
MAX_EXP = 14241
MIN_EXP = 417
class WayToTheDream(QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
self.setWindowTitle('Way To The Dream!')
self.setFixedSize(1010, 763)
# условия для запуска | калькулятор
self.LineVivodCalc.setDisabled(True)
self.PolMuzh.stateChanged.connect(self.calculating_if_polmuzh)
self.PolZhen.stateChanged.connect(self.calculating_if_polzhen)
# лимит на количество символов в лайнэдитах + возможность вводить только цифры
self.LineRost.setValidator(QtGui.QIntValidator(1, 999))
self.LineVes.setValidator(QtGui.QIntValidator(1, 999))
self.LineVozrast.setValidator(QtGui.QIntValidator(1, 999))
# self.lineEdit.setValidator(QtGui.QIntValidator(1, 99999))
# проверка на соблюдение условий В КАЛЬКУЛЯТОРЕ СУТОЧНОГО РАСХОДА КАЛОРИЙ если пользователь выбрал МУЖСКОЙ ПОЛ
def checking_for_a_condition_polmuzh(self):
string_vozrast1 = get_int(self.LineVozrast)
if MIN_AGE_FOR_CALC <= string_vozrast1 <= OLDEST_HUMAN:
string_ves1 = get_int(self.LineVes)
if GREATEST_WEIGHT >= string_ves1 >= MIN_WEIGHT_FOR_CALC:
string_rost1 = get_int(self.LineRost)
if HIGHEST_GROWTH >= string_rost1 >= LOWEST_GROWTH:
return 5 + (10 * string_ves1) + (6.25 * string_rost1) - (
5 * string_vozrast1)
# проверка на соблюдение условий В КАЛЬКУЛЯТОРЕ СУТОЧНОГО РАСХОДА КАЛОРИЙ если пользователь выбрал ЖЕНСКИЙ ПОЛ
def checking_for_a_condition_polzhen(self):
string_vozrast1 = get_int(self.LineVozrast)
if MIN_AGE_FOR_CALC <= string_vozrast1 <= OLDEST_HUMAN:
string_ves1 = get_int(self.LineVes)
if GREATEST_WEIGHT >= string_ves1 >= MIN_WEIGHT_FOR_CALC:
string_rost1 = get_int(self.LineRost)
if HIGHEST_GROWTH >= string_rost1 >= LOWEST_GROWTH:
return (10 * string_ves1) + (6.25 * string_rost1) - (
5 * string_vozrast1) - 161
# вывод суточного расхода калорий если пользователь выбрал МУЖСКОЙ ПОЛ
def calculating_if_polmuzh(self, toggle):
if toggle == QtCore.Qt.Checked:
self.PolZhen.setEnabled(False)
if self.checking_for_a_condition_polmuzh() is None:
self.LineVivodCalc.clear()
elif self.ComboFizAkt.currentText() == 'Сидячий':
self.LineVivodCalc.setText(str(self.checking_for_a_condition_polmuzh() * 1.2) + ' ккал/сут.')
elif self.ComboFizAkt.currentText() == 'Слабый физ. труд':
self.LineVivodCalc.setText(str(self.checking_for_a_condition_polmuzh() * 1.375) + ' ккал/сут.')
elif self.ComboFizAkt.currentText() == 'Преобладает физ. труд':
self.LineVivodCalc.setText(str(self.checking_for_a_condition_polmuzh() * 1.55) + ' ккал/сут.')
elif self.ComboFizAkt.currentText() == 'Тяжёлый физ. труд':
self.LineVivodCalc.setText(str(self.checking_for_a_condition_polmuzh() * 1.725) + ' ккал/сут.')
elif self.ComboFizAkt.currentText() == 'Очень тяжёлый физ. труд':
self.LineVivodCalc.setText(str(self.checking_for_a_condition_polmuzh() * 1.9) + ' ккал/сут.')
else:
self.PolZhen.setEnabled(True)
self.LineVivodCalc.clear()
# вывод суточного расхода калорий если пользователь выбрал ЖЕНСКИЙ ПОЛ
def calculating_if_polzhen(self, toggle):
if toggle == QtCore.Qt.Checked:
self.PolMuzh.setEnabled(False)
if self.checking_for_a_condition_polzhen() is None:
self.LineVivodCalc.clear()
elif self.ComboFizAkt.currentText() == 'Сидячий':
self.LineVivodCalc.setText(str(self.checking_for_a_condition_polzhen() * 1.2) + ' ккал/сут.')
elif self.ComboFizAkt.currentText() == 'Слабый физ. труд':
self.LineVivodCalc.setText(str(self.checking_for_a_condition_polzhen() * 1.375) + ' ккал/сут.')
elif self.ComboFizAkt.currentText() == 'Преобладает физ. труд':
self.LineVivodCalc.setText(str(self.checking_for_a_condition_polzhen() * 1.55) + ' ккал/сут.')
elif self.ComboFizAkt.currentText() == 'Тяжёлый физ. труд':
self.LineVivodCalc.setText(str(self.checking_for_a_condition_polzhen() * 1.725) + ' ккал/сут.')
elif self.ComboFizAkt.currentText() == 'Очень тяжёлый физ. труд':
self.LineVivodCalc.setText(str(self.checking_for_a_condition_polzhen() * 1.9) + ' ккал/сут.')
else:
self.PolMuzh.setEnabled(True)
self.LineVivodCalc.clear()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = WayToTheDream()
ex.show()
sys.exit(app.exec_())
НО!
Я вам рекомендую не писать костыли с QLineEdit, а вместо них использовать QSpinBox. Этот виджет как раз то, что вам нужно и вы сможете сразу работать с целыми числами и получать из него числа (метод value)
UPD. Пример с этим решением в соседнем ответе
Я бы избавился от QLineEdit в пользу QSpinBox, это решит проблему и упростит код, плюс интерфейс станет дружелюбнее. Причем, для этого нужно не нужно переписывать всё – нужно в нескольких местах поменять код, а в дизайнере на место QLineEdit поместить QSpinBox с такимим же object name.
После замены на QSpinBox работает и теперь выглядит так:
Выделил комментариями c ^^^^^^^ места, где поменял
main.py:
import re
import sys
from PyQt5 import QtCore, QtGui
from PyQt5.QtWidgets import QApplication, QMainWindow
from design_project import Ui_MainWindow
OLDEST_HUMAN = 112
MIN_AGE_FOR_CALC = 7
GREATEST_WEIGHT = 635
MIN_WEIGHT_FOR_CALC = 20
HIGHEST_GROWTH = 272
LOWEST_GROWTH = 55
MAX_EXP = 14241
MIN_EXP = 417
class WayToTheDream(QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
self.setWindowTitle('Way To The Dream!')
self.setFixedSize(1010, 763)
# условия для запуска | калькулятор
self.LineVivodCalc.setDisabled(True)
self.PolMuzh.stateChanged.connect(self.calculating_if_polmuzh)
self.PolZhen.stateChanged.connect(self.calculating_if_polzhen)
# лимит на количество символов в лайнэдитах + возможность вводить только цифры
# self.LineRost.setValidator(QtGui.QIntValidator(1, 999))
# self.LineVes.setValidator(QtGui.QIntValidator(1, 999))
# self.LineVozrast.setValidator(QtGui.QIntValidator(1, 999))
# self.lineEdit.setValidator(QtGui.QIntValidator(1, 99999))
self.LineRost.setRange(LOWEST_GROWTH, HIGHEST_GROWTH)
self.LineVes.setRange(MIN_WEIGHT_FOR_CALC, GREATEST_WEIGHT)
self.LineVozrast.setRange(MIN_AGE_FOR_CALC, OLDEST_HUMAN)
# ^^^^^^^^^^^^^^^^
# проверка на соблюдение условий В КАЛЬКУЛЯТОРЕ СУТОЧНОГО РАСХОДА КАЛОРИЙ если пользователь выбрал МУЖСКОЙ ПОЛ
def checking_for_a_condition_polmuzh(self):
# string_vozrast1 = int("".join(list(map(str, re.findall(r'\d+', self.LineVozrast.text())))))
string_vozrast1 = self.LineVozrast.value()
# ^^^^^^^^^^^^^^^^
if MIN_AGE_FOR_CALC <= string_vozrast1 <= OLDEST_HUMAN:
# string_ves1 = int("".join(list(map(str, re.findall(r'\d+', self.LineVes.text())))))
string_ves1 = self.LineVes.value()
# ^^^^^^^^^^^^^^^^
if GREATEST_WEIGHT >= string_ves1 >= MIN_WEIGHT_FOR_CALC:
# string_rost1 = int("".join(list(map(str, re.findall(r'\d+', self.LineRost.text())))))
string_rost1 = self.LineRost.value()
# ^^^^^^^^^^^^^^^^
if HIGHEST_GROWTH >= string_rost1 >= LOWEST_GROWTH:
return 5 + (10 * string_ves1) + (6.25 * string_rost1) - (
5 * string_vozrast1)
# проверка на соблюдение условий В КАЛЬКУЛЯТОРЕ СУТОЧНОГО РАСХОДА КАЛОРИЙ если пользователь выбрал ЖЕНСКИЙ ПОЛ
def checking_for_a_condition_polzhen(self):
# string_vozrast1 = int("".join(list(map(str, re.findall(r'\d+', self.LineVozrast.text())))))
string_vozrast1 = self.LineVozrast.value()
# ^^^^^^^^^^^^^^^^
if MIN_AGE_FOR_CALC <= string_vozrast1 <= OLDEST_HUMAN:
# string_ves1 = int("".join(list(map(str, re.findall(r'\d+', self.LineVes.text())))))
string_ves1 = self.LineVes.value()
# ^^^^^^^^^^^^^^^^
if GREATEST_WEIGHT >= string_ves1 >= MIN_WEIGHT_FOR_CALC:
# string_rost1 = int("".join(list(map(str, re.findall(r'\d+', self.LineRost.text())))))
string_rost1 = self.LineRost.value()
# ^^^^^^^^^^^^^^^^
if HIGHEST_GROWTH >= string_rost1 >= LOWEST_GROWTH:
return (10 * string_ves1) + (6.25 * string_rost1) - (
5 * string_vozrast1) - 161
# вывод суточного расхода калорий если пользователь выбрал МУЖСКОЙ ПОЛ
def calculating_if_polmuzh(self, toggle):
if toggle == QtCore.Qt.Checked:
self.PolZhen.setEnabled(False)
if self.checking_for_a_condition_polmuzh() is None:
self.LineVivodCalc.clear()
elif self.ComboFizAkt.currentText() == 'Сидячий':
self.LineVivodCalc.setText(str(self.checking_for_a_condition_polmuzh() * 1.2) + ' ккал/сут.')
elif self.ComboFizAkt.currentText() == 'Слабый физ. труд':
self.LineVivodCalc.setText(str(self.checking_for_a_condition_polmuzh() * 1.375) + ' ккал/сут.')
elif self.ComboFizAkt.currentText() == 'Преобладает физ. труд':
self.LineVivodCalc.setText(str(self.checking_for_a_condition_polmuzh() * 1.55) + ' ккал/сут.')
elif self.ComboFizAkt.currentText() == 'Тяжёлый физ. труд':
self.LineVivodCalc.setText(str(self.checking_for_a_condition_polmuzh() * 1.725) + ' ккал/сут.')
elif self.ComboFizAkt.currentText() == 'Очень тяжёлый физ. труд':
self.LineVivodCalc.setText(str(self.checking_for_a_condition_polmuzh() * 1.9) + ' ккал/сут.')
else:
self.PolZhen.setEnabled(True)
self.LineVivodCalc.clear()
# вывод суточного расхода калорий если пользователь выбрал ЖЕНСКИЙ ПОЛ
def calculating_if_polzhen(self, toggle):
if toggle == QtCore.Qt.Checked:
self.PolMuzh.setEnabled(False)
if self.checking_for_a_condition_polzhen() is None:
self.LineVivodCalc.clear()
elif self.ComboFizAkt.currentText() == 'Сидячий':
self.LineVivodCalc.setText(str(self.checking_for_a_condition_polzhen() * 1.2) + ' ккал/сут.')
elif self.ComboFizAkt.currentText() == 'Слабый физ. труд':
self.LineVivodCalc.setText(str(self.checking_for_a_condition_polzhen() * 1.375) + ' ккал/сут.')
elif self.ComboFizAkt.currentText() == 'Преобладает физ. труд':
self.LineVivodCalc.setText(str(self.checking_for_a_condition_polzhen() * 1.55) + ' ккал/сут.')
elif self.ComboFizAkt.currentText() == 'Тяжёлый физ. труд':
self.LineVivodCalc.setText(str(self.checking_for_a_condition_polzhen() * 1.725) + ' ккал/сут.')
elif self.ComboFizAkt.currentText() == 'Очень тяжёлый физ. труд':
self.LineVivodCalc.setText(str(self.checking_for_a_condition_polzhen() * 1.9) + ' ккал/сут.')
else:
self.PolMuzh.setEnabled(True)
self.LineVivodCalc.clear()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = WayToTheDream()
ex.show()
sys.exit(app.exec_())
design_project.py
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(1010, 763)
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.QSpinBox(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.QSpinBox(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.QSpinBox(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", "Кол-во тренировок в неделю:"))
self.ComboTrenirovki.setItemText(0, _translate("MainWindow", "0"))
self.ComboTrenirovki.setItemText(1, _translate("MainWindow", "1"))
self.ComboTrenirovki.setItemText(2, _translate("MainWindow", "2"))
self.ComboTrenirovki.setItemText(3, _translate("MainWindow", "3"))
self.ComboTrenirovki.setItemText(4, _translate("MainWindow", "4"))
self.ComboTrenirovki.setItemText(5, _translate("MainWindow", "5"))
self.ComboTrenirovki.setItemText(6, _translate("MainWindow", "6"))
self.ComboTrenirovki.setItemText(7, _translate("MainWindow", "7+"))
PS.
Советую, виджеты размещать на компоновщиках (layout, типа QVBoxLayout, QHBoxLayout, QGridLayout, ...), тогда не придется вручную размещать и менять размер виджетов, да и они будут растягиваться вместе с окном. Компоновщики есть в Qt Designer

