При нажатии кнопки второй раз программа вылетает, ошибок не выдает

При нажатии кнопки второй раз программа вылетает, ошибок не выдает.

#!/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_())

введите сюда описание изображения

→ Ссылка