При нажатии кнопки выполнить действия с данным, введенными в 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_())
