Как получить текст из виджетов в PyQt5?
Вопрос такой, было ПО, решил расширить и добавить в него простой интерфейс. Для этого использовал PyQt5 + Qt Designer. Но не могу связать с переменными в коде значения, которые вводятся в виджете LineEdit, пример ниже.
Есть диалоговое окно, на нём пустые виджеты LineEdit для ввода данных и кнопка для запуска расчётов.
Код для связи кнопки и кода:
from PyQt5 import uic, QtWidgets
Form, _ = uic.loadUiType("1.ui")
class Ui(QtWidgets.QDialog, Form):
def __init__(self):
super(Ui, self).__init__()
self.setupUi(self)
self.pushButton.clicked.connect(self.ResultButtonPressed)
@staticmethod
def ResultButtonPressed():
a = input()
b = input()
c = input()
v = a + b - c
print(v)
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
w = Ui()
w.show()
sys.exit(app.exec_())
Нужно присвоить значения, введённые в полях виджета LineEdit (lineEdit_1, lineEdit_2, lineEdit_3) переменным в функции (a, b, c) при нажатии кнопки. Как это сделать?
Ответы (1 шт):
Если каждый LineEdit в QtDesigner именуется именно так (lineEdit_1, lineEdit_2, lineEdit_3), то в коде методов класса, к которому подключён UI, к ним можно обратиться как self.lineEdit_1, self.lineEdit_2, self.lineEdit_3 соответственно.
Теперь можно пользоваться методами, указанными в документации. В данном случае нужен .text():
def ResultButtonPressed():
a = int(self.lineEdit_1.text())
b = int(self.lineEdit_2.text())
c = int(self.lineEdit_3.text())
print(a + b - c)
Примечание: по указанной ссылке содержится документация для Qt на языке C++, но все названия методов и их описания будут работать и для PyQt5.