Помогите разобраться в PyQt5 как правильно преобразовать lineEdit к типу int и дальше работать с ним

В общем я новичок и мне надо преобразовать lineEdit, чтоб они воспринимали числа. Я создал в Qt Designer , преобразовал свой tst.ui в testy.py и создал еще один файл Count в который импортировал testy.py.

В написал простую функцию, которая должна сложить 2 числа из (lineEdit и lineEdit_2) и после нажатия на кнопку присвоить lineEdit_3 результат.

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

Вот testy.py:

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(199, 240)
        self.lineEdit = QtWidgets.QLineEdit(Form)
        self.lineEdit.setGeometry(QtCore.QRect(50, 30, 113, 20))
        self.lineEdit.setObjectName("lineEdit")
        self.lineEdit_2 = QtWidgets.QLineEdit(Form)
        self.lineEdit_2.setGeometry(QtCore.QRect(50, 70, 113, 20))
        self.lineEdit_2.setObjectName("lineEdit_2")
        self.lineEdit_3 = QtWidgets.QLineEdit(Form)
        self.lineEdit_3.setGeometry(QtCore.QRect(50, 120, 113, 20))
        self.lineEdit_3.setObjectName("lineEdit_3")
        self.pushButton = QtWidgets.QPushButton(Form)
        self.pushButton.setGeometry(QtCore.QRect(60, 170, 91, 23))
        self.pushButton.setObjectName("pushButton")

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

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        self.pushButton.setText(_translate("Form", "Сложить"))

Вот Count.py:

from PyQt5 import QtCore, QtGui, QtWidgets
from testy import Ui_Form
import sys

app = QtWidgets.QApplication(sys.argv)
Form = QtWidgets.QWidget()
ui = Ui_Form()
ui.setupUi(Form)
Form.show()

def count():
    a = int(ui.lineEdit.text())
    b = int(ui.lineEdit_2.text())
    ui.lineEdit_3.setText(a + b)

ui.pushButton.clicked.connect(count)

sys.exit(app.exec_())

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

Автор решения: Sergey Tatarincev

text() из QLineEdit это обычный QString, поэтому используйте int x = ui.lineEdit_2.text().toInt(); А вообще, если предполагаете только числовые значения, логичнее использовать QSpinBox и получать значение как int x = ui.spinbox.value();

→ Ссылка
Автор решения: S. Nick

QLineEdit::setText(const QString &)

Установка этого свойства очищает выделение, очищает историю отмен / повторов, перемещает курсор в конец строки и сбрасывает измененное свойство в false. Текст не проверяется при вставке с помощью setText().

import sys
from PyQt5 import QtCore, QtGui, QtWidgets

#from testy import Ui_Form
class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(199, 240)
        self.lineEdit = QtWidgets.QLineEdit(Form)
        self.lineEdit.setGeometry(QtCore.QRect(50, 30, 113, 20))
        self.lineEdit.setObjectName("lineEdit")
        self.lineEdit_2 = QtWidgets.QLineEdit(Form)
        self.lineEdit_2.setGeometry(QtCore.QRect(50, 70, 113, 20))
        self.lineEdit_2.setObjectName("lineEdit_2")
        self.lineEdit_3 = QtWidgets.QLineEdit(Form)
        self.lineEdit_3.setGeometry(QtCore.QRect(50, 120, 113, 20))
        self.lineEdit_3.setObjectName("lineEdit_3")
        self.pushButton = QtWidgets.QPushButton(Form)
        self.pushButton.setGeometry(QtCore.QRect(60, 170, 91, 23))
        self.pushButton.setObjectName("pushButton")

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

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        self.pushButton.setText(_translate("Form", "Сложить"))


class Widget(QtWidgets.QWidget, Ui_Form):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.setupUi(self)

        self.pushButton.clicked.connect(self.add_a_b)        

    def add_a_b(self):
        a = int(self.lineEdit.text())
        b = int(self.lineEdit_2.text())
        self.lineEdit_3.setText(str(a + b))              # - (a + b)

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

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

→ Ссылка