При нажатии кнопки выполнить действия с данным, введенными в QLineEdit

Помогите, пожалуйста. Почему не срабатывает:

def click(self):
    a = num1.get()  # берем текст из первого поля
    a = float(a)  # преобразуем в число

    b = num2.get()
    b = float(b)

    c = str(a + b)  # результат переведем в строку для дальнейшего вывода
    print(c)

Полный код:

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):

        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(243, 132)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")

        self.num1 = QtWidgets.QLineEdit(self.centralwidget)
        self.num1.setGeometry(QtCore.QRect(70, 0, 113, 20))
        self.num1.setObjectName("num1")

        self.num2 = QtWidgets.QLineEdit(self.centralwidget)
        self.num2.setGeometry(QtCore.QRect(70, 20, 113, 20))
        self.num2.setObjectName("num2")

        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(14, 90, 211, 23))
        self.pushButton.setObjectName("pushButton")


        MainWindow.setCentralWidget(self.centralwidget)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

        self.pushButton.clicked.connect(self.click)

    def click(self):
        a = num1.get()  # берем текст из первого поля
        a = float(a)  # преобразуем в число

        b = num2.get()
        b = float(b)

        c = str(a + b)  # результат переведем в строку для дальнейшего вывода
        print(c)


    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.pushButton.setText(_translate("MainWindow", "ADD"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

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

Автор решения: S. Nick

НИКОГДА НЕ ИЗМЕНЯЙТЕ код, сгенерированный Qt Designer, НИКОГДА.
Создайте другой класс, который наследуется от соответствующего виджета, и используйте созданный класс для его заполнения.

text : QString

Это свойство содержит текст редактирования строки.

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object): 
    def setupUi(self, MainWindow):

        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(243, 132)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")

        self.num1 = QtWidgets.QLineEdit(self.centralwidget)
        self.num1.setGeometry(QtCore.QRect(70, 0, 113, 20))
        self.num1.setObjectName("num1")

        self.num2 = QtWidgets.QLineEdit(self.centralwidget)
        self.num2.setGeometry(QtCore.QRect(70, 20, 113, 20))
        self.num2.setObjectName("num2")

        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(14, 90, 211, 23))
        self.pushButton.setObjectName("pushButton")


        MainWindow.setCentralWidget(self.centralwidget)
        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.pushButton.setText(_translate("MainWindow", "ADD"))


class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
    def __init__(self):
        super().__init__()
        
        self.setupUi(self)

        self.pushButton.clicked.connect(self.click)

    def click(self):
#        a = num1.get()       # берем текст из первого поля
#        b = num2.get()

        a = self.num1.text()  # берем текст из первого поля          # +++
        b = self.num2.text()                                         # +++
        
        if not a or not b:
            print('Заполните все поля для расчета.')
            return

        try:
            a = float(a)      # преобразуем в число
            b = float(b)
            c = str(a + b)    # результат переведем в строку для дальнейшего вывода
            print(c)
        except:
            print('Данные введены не правильно.')
            return
        

if __name__ == "__main__":
    import sys
    
    app = QtWidgets.QApplication(sys.argv)
    w = MainWindow()
    w.show()
    sys.exit(app.exec_())

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

→ Ссылка