При нажатии кнопки второй раз программа вылетает, ошибок не выдает
При нажатии кнопки второй раз программа вылетает, ошибок не выдает.
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import QLabel, QLineEdit, QPushButton, QApplication, QWidget, QMessageBox
count=0
class window(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.txt_1=QLabel("Введите ваш возраст", self)
self.txt_1.move(10, 10)
self.qle=QLineEdit(self)
self.qle.move(120,10)
self.btn=QPushButton("Вычислить", self)
self.btn.move(10, 40)
self.btn.clicked.connect(self.click)
self.resize(400, 150)
self.setWindowTitle("Калькулятор идеального веса")
self.show()
def click(self):
global count
count=count+1
if count==1:
self.txt_1.setText("Введите ваш рост")
age=int(self.qle.text())
if count==2:
height=int(self.qle.text())
result=int((height*3-450+age)*0.25+45)
self.msgbox=QMessageBox(self)
self.msgbox.setWindowTitle("Результат")
self.msgbox.setText(f"Ваш идеальный вес: {result}")
x=msgbox.exec_()
count=0
if __name__=='__main__':
app=QApplication(sys.argv)
w1=window()
sys.exit(app.exec_())
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Попробуйте так:
import sys
from PyQt5.QtWidgets import QLabel, QLineEdit, QPushButton, \
QApplication, QWidget, QMessageBox
# - count = 0
class Window(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.txt_1 = QLabel("Введите ваш возраст", self)
self.txt_1.move(10, 10)
self.qle = QLineEdit(self)
self.qle.move(120,10)
self.btn = QPushButton("Вычислить", self)
self.btn.move(10, 40)
self.btn.clicked.connect(self.click)
self.age = None # +++
self.count = 0 # +++
def click(self):
# - global count
if not self.qle.text(): # +++
self.qle.setFocus() # +++
return # +++
self.count += 1 # +++
if self.count == 1:
self.txt_1.setText("Введите ваш рост")
self.age = int(self.qle.text())
self.qle.clear() # +++
elif self.count == 2:
height = int(self.qle.text())
result = int((height * 3 - 450 + self.age) * 0.25 + 45)
self.msgbox = QMessageBox(self)
self.msgbox.setWindowTitle("Результат")
self.msgbox.setText(f"Ваш идеальный вес: {result}")
x = self.msgbox.exec_()
self.count = 0
self.txt_1.setText("Введите ваш возраст") # +++
self.qle.clear() # +++
self.qle.setFocus() # +++
if __name__=='__main__':
app=QApplication(sys.argv)
w = Window()
w.resize(400, 150)
w.setWindowTitle("Калькулятор идеального веса")
w.show()
sys.exit(app.exec_())
