Как получить текст из QLineEdit и привязать действие к кнопке?
Как мне получить текст из QLineEdit и привязать действие к кнопкам?
main.py:
from PyQt5 import QtCore, QtGui, QtWidgets
import os
import sys
class Ui_MainWidget(object):
def setupUi(self, MainWidget):
MainWidget.setObjectName("MainWidget")
MainWidget.setEnabled(True)
MainWidget.resize(391, 500)
MainWidget.setMinimumSize(QtCore.QSize(0, 0))
MainWidget.setMaximumSize(QtCore.QSize(10000000, 10000000))
MainWidget.setAutoFillBackground(False)
self.label = QtWidgets.QLabel(MainWidget)
self.label.setGeometry(QtCore.QRect(80, 0, 241, 51))
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(36)
font.setBold(False)
font.setWeight(50)
font.setStyleStrategy(QtGui.QFont.PreferDefault)
self.label.setFont(font)
self.label.setTextFormat(QtCore.Qt.AutoText)
self.label.setObjectName("label")
self.Program1 = QtWidgets.QLineEdit(MainWidget)
self.Program1.setGeometry(QtCore.QRect(10, 100, 371, 31))
self.Program1.setText("")
self.Program1.setObjectName("Program1")
self.Program1_2 = QtWidgets.QLineEdit(MainWidget)
self.Program1_2.setGeometry(QtCore.QRect(10, 180, 371, 31))
self.Program1_2.setText("")
self.Program1_2.setObjectName("Program1_2")
self.ProgramN1 = QtWidgets.QLabel(MainWidget)
self.ProgramN1.setGeometry(QtCore.QRect(110, 60, 171, 41))
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(19)
font.setBold(False)
font.setWeight(50)
font.setStyleStrategy(QtGui.QFont.PreferDefault)
self.ProgramN1.setFont(font)
self.ProgramN1.setTextFormat(QtCore.Qt.AutoText)
self.ProgramN1.setObjectName("ProgramN1")
self.ProgramN2 = QtWidgets.QLabel(MainWidget)
self.ProgramN2.setGeometry(QtCore.QRect(110, 140, 171, 41))
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(19)
font.setBold(False)
font.setWeight(50)
font.setStyleStrategy(QtGui.QFont.PreferDefault)
self.ProgramN2.setFont(font)
self.ProgramN2.setTextFormat(QtCore.Qt.AutoText)
self.ProgramN2.setObjectName("ProgramN2")
self.pushButton = QtWidgets.QPushButton(MainWidget)
self.pushButton.setGeometry(QtCore.QRect(20, 390, 351, 41))
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(20)
self.pushButton.setFont(font)
self.pushButton.setObjectName("pushButton")
self.pushButton_2 = QtWidgets.QPushButton(MainWidget)
self.pushButton_2.setGeometry(QtCore.QRect(20, 440, 351, 41))
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(20)
self.pushButton_2.setFont(font)
self.pushButton_2.setObjectName("pushButton_2")
self.retranslateUi(MainWidget)
QtCore.QMetaObject.connectSlotsByName(MainWidget)
def retranslateUi(self, MainWidget):
_translate = QtCore.QCoreApplication.translate
MainWidget.setWindowTitle(_translate("MainWidget", "Юлька"))
self.label.setText(_translate("MainWidget", "Юлия 0.2.0"))
self.ProgramN1.setText(_translate("MainWidget", "Программа №1"))
self.ProgramN2.setText(_translate("MainWidget", "Программа №2"))
self.pushButton.setText(_translate("MainWidget", "Запустить программу №1"))
self.pushButton_2.setText(_translate("MainWidget", "Запустить программу №2"))
def copy_text(self, number):
if number == 1:
text1 = self.Program1.toPlainText() # <--- - text() +++ toPlainText
print(text + "Всё ок, нумбер1")
elif number == 2:
text1 = self.Program1_2.toPlainText() # <--- - text() +++ toPlainText
print(text + "Всё ок, нумбер2")
#pushButton.clicked.connect(copy_text(1))
#pushButton_2.clicked.connect(copy_text(2))
self.pushButton.clicked.connect(copy_text(1))
self.pushButton_2.clicked.connect(copy_text(2))
class Window(QtWidgets.QMainWindow):
def __init__(self):
super(Window, self).__init__()
self.ui = Ui_MainWidget()
self.ui.setupUi(self)
if __name__ == '__main__':
app = QtWidgets.QApplication([])
application = Window()
application.show()
sys.exit(app.exec_())
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Не изменяйте код, сгенерированный Qt Designer. Создайте другой класс,
который наследуется от соответствующего виджета, и используйте созданный класс для его заполнения.
#import os
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWidget(object):
def setupUi(self, MainWidget):
MainWidget.setObjectName("MainWidget")
MainWidget.setEnabled(True)
MainWidget.resize(391, 500)
MainWidget.setMinimumSize(QtCore.QSize(0, 0))
MainWidget.setMaximumSize(QtCore.QSize(10000000, 10000000))
MainWidget.setAutoFillBackground(False)
self.label = QtWidgets.QLabel(MainWidget)
self.label.setGeometry(QtCore.QRect(80, 0, 241, 51))
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(36)
font.setBold(False)
font.setWeight(50)
font.setStyleStrategy(QtGui.QFont.PreferDefault)
self.label.setFont(font)
self.label.setTextFormat(QtCore.Qt.AutoText)
self.label.setObjectName("label")
self.Program1 = QtWidgets.QLineEdit(MainWidget)
self.Program1.setGeometry(QtCore.QRect(10, 100, 371, 31))
self.Program1.setText("")
self.Program1.setObjectName("Program1")
self.Program1_2 = QtWidgets.QLineEdit(MainWidget)
self.Program1_2.setGeometry(QtCore.QRect(10, 180, 371, 31))
self.Program1_2.setText("")
self.Program1_2.setObjectName("Program1_2")
self.ProgramN1 = QtWidgets.QLabel(MainWidget)
self.ProgramN1.setGeometry(QtCore.QRect(110, 60, 171, 41))
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(19)
font.setBold(False)
font.setWeight(50)
font.setStyleStrategy(QtGui.QFont.PreferDefault)
self.ProgramN1.setFont(font)
self.ProgramN1.setTextFormat(QtCore.Qt.AutoText)
self.ProgramN1.setObjectName("ProgramN1")
self.ProgramN2 = QtWidgets.QLabel(MainWidget)
self.ProgramN2.setGeometry(QtCore.QRect(110, 140, 171, 41))
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(19)
font.setBold(False)
font.setWeight(50)
font.setStyleStrategy(QtGui.QFont.PreferDefault)
self.ProgramN2.setFont(font)
self.ProgramN2.setTextFormat(QtCore.Qt.AutoText)
self.ProgramN2.setObjectName("ProgramN2")
self.pushButton = QtWidgets.QPushButton(MainWidget)
self.pushButton.setGeometry(QtCore.QRect(20, 390, 351, 41))
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(20)
self.pushButton.setFont(font)
self.pushButton.setObjectName("pushButton")
self.pushButton_2 = QtWidgets.QPushButton(MainWidget)
self.pushButton_2.setGeometry(QtCore.QRect(20, 440, 351, 41))
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(20)
self.pushButton_2.setFont(font)
self.pushButton_2.setObjectName("pushButton_2")
self.retranslateUi(MainWidget)
QtCore.QMetaObject.connectSlotsByName(MainWidget)
def retranslateUi(self, MainWidget):
_translate = QtCore.QCoreApplication.translate
MainWidget.setWindowTitle(_translate("MainWidget", "Юлька"))
self.label.setText(_translate("MainWidget", "Юлия 0.2.0"))
self.ProgramN1.setText(_translate("MainWidget", "Программа №1"))
self.ProgramN2.setText(_translate("MainWidget", "Программа №2"))
self.pushButton.setText(_translate("MainWidget", "Запустить программу №1"))
self.pushButton_2.setText(_translate("MainWidget", "Запустить программу №2"))
class Window(QtWidgets.QMainWindow, Ui_MainWidget):
def __init__(self):
super(Window, self).__init__()
# self.ui = Ui_MainWidget()
# self.ui.setupUi(self)
self.setupUi(self)
self.pushButton.clicked.connect(lambda: self.copy_text(1)) # +++ lambda
self.pushButton_2.clicked.connect(lambda: self.copy_text(2)) # +++ lambda
def copy_text(self, number):
if number == 1:
# text1 = self.Program1.toPlainText() # ---
text1 = self.Program1.text() # +++
print(f"{text1} Всё ок, нумбер 1")
elif number == 2:
# text1 = self.Program1_2.toPlainText() # ---
text1 = self.Program1_2.text() # +++
print(f"{text1} Всё ок, нумбер 2")
if __name__ == '__main__':
app = QtWidgets.QApplication([])
application = Window()
application.show()
sys.exit(app.exec_())
