Как принимать пользовательские данные из QLineEdit после нажатия клавиши enter?
Задача состоит в том, чтобы в поле QLineEdit принимать строку или число и сохранить ее в переменную после нажатия клавиши enter, искал в интернете, но там есть только ввод в консоль по нажатию кнопки, а мне необходимо , чтобы после enter данные записывались в переменную.
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(639, 480)
MainWindow.setMinimumSize(QtCore.QSize(639, 480))
MainWindow.setMaximumSize(QtCore.QSize(639, 480))
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.lets_parse = QtWidgets.QPushButton(self.centralwidget)
self.lets_parse.setGeometry(QtCore.QRect(150, 350, 341, 61))
font = QtGui.QFont()
font.setPointSize(14)
self.lets_parse.setFont(font)
self.lets_parse.setObjectName("lets_parse")
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(20, 40, 101, 31))
font = QtGui.QFont()
font.setPointSize(14)
self.label.setFont(font)
self.label.setObjectName("label")
self.sort_method = QtWidgets.QComboBox(self.centralwidget)
self.sort_method.setGeometry(QtCore.QRect(460, 80, 171, 21))
font = QtGui.QFont()
font.setPointSize(11)
self.sort_method.setFont(font)
self.sort_method.setObjectName("sort_method")
self.sort_method.addItem("")
self.sort_method.addItem("")
self.sort_method.addItem("")
self.sort_method.addItem("")
self.label_2 = QtWidgets.QLabel(self.centralwidget)
self.label_2.setGeometry(QtCore.QRect(460, 40, 161, 31))
font = QtGui.QFont()
font.setPointSize(14)
self.label_2.setFont(font)
self.label_2.setObjectName("label_2")
self.url_input = QtWidgets.QLineEdit(self.centralwidget)
self.url_input.setGeometry(QtCore.QRect(130, 49, 291, 21))
font = QtGui.QFont()
font.setPointSize(11)
self.url_input.setFont(font)
self.url_input.setObjectName("url_input")
self.max_pages = QtWidgets.QLabel(self.centralwidget)
self.max_pages.setGeometry(QtCore.QRect(280, 160, 311, 61))
font = QtGui.QFont()
font.setPointSize(11)
self.max_pages.setFont(font)
self.max_pages.setObjectName("max_pages")
self.page_input = QtWidgets.QLineEdit(self.centralwidget)
self.page_input.setGeometry(QtCore.QRect(180, 180, 41, 21))
self.page_input.setObjectName("page_input")
self.label_3 = QtWidgets.QLabel(self.centralwidget)
self.label_3.setGeometry(QtCore.QRect(10, 170, 141, 41))
font = QtGui.QFont()
font.setPointSize(11)
self.label_3.setFont(font)
self.label_3.setObjectName("label_3")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 639, 21))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
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.lets_parse.setText(_translate("MainWindow", "Cпарсить"))
self.label.setText(_translate("MainWindow", "Url адресс:"))
self.sort_method.setItemText(0, _translate("MainWindow", "без сортировки"))
self.sort_method.setItemText(1, _translate("MainWindow", "дешевле"))
self.sort_method.setItemText(2, _translate("MainWindow", "дороже"))
self.sort_method.setItemText(3, _translate("MainWindow", "по дате"))
self.label_2.setText(_translate("MainWindow", "Метод сортировки"))
self.max_pages.setText(_translate("MainWindow", "Максимальное количество страниц : "))
self.label_3.setText(_translate("MainWindow", "Количесиво страниц"))
def url_redactor(self):
print(self.url_input.text())
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_())
Ответы (3 шт):
Если я вас правильно понял, то один из вариантов:
UPD: Если ответа не находите на форумах, то лезьте в документацию: https://doc.qt.io/qt-5/qlineedit.html . В ней подробно описано про каждый виджет, сигналы этого виджета и тому подобное..
from PyQt5.Qt import *
import sys
class Window(QWidget):
def __init__(self, parent=None):
QWidget.__init__(self, parent)
self.edit = QLineEdit(self)
self.edit.returnPressed.connect(self.enter_checker)
def enter_checker(self):
self.userText = self.edit.text()
self.edit.clear()
if __name__ == "__main__":
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
НИКОГДА Не изменяйте код, сгенерированный Qt Designer, НИКОГДА.
Создайте другой класс,
который наследуется от соответствующего виджета, и используйте созданный класс для его заполнения.
void QLineEdit::
editingFinished()Этот сигнал излучается при нажатии клавиши
ReturnилиEnterилипри потере фокусапри редактировании строки.
Обратите внимание, что если в строке редактирования установленvalidator()илиinputMask()и нажата клавиша enter/return, сигналeditFinished()будет выдан только в том случае, если ввод следует заinputMask()иvalidator()возвращаетQValidator::Acceptable.
или
void QLineEdit::
returnPressed()Этот сигнал излучается при нажатии клавиши
ReturnилиEnter.
Обратите внимание, что если в строке редактирования установленvalidator()илиinputMask()и нажата клавиша enter/return, сигналeditFinished()будет выдан только в том случае, если ввод следует заinputMask()иvalidator()возвращаетQValidator::Acceptable.
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.Qt import *
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(639, 480)
MainWindow.setMinimumSize(QtCore.QSize(639, 480))
MainWindow.setMaximumSize(QtCore.QSize(639, 480))
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.lets_parse = QtWidgets.QPushButton(self.centralwidget)
self.lets_parse.setGeometry(QtCore.QRect(150, 350, 341, 61))
font = QtGui.QFont()
font.setPointSize(14)
self.lets_parse.setFont(font)
self.lets_parse.setObjectName("lets_parse")
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(20, 40, 101, 31))
font = QtGui.QFont()
font.setPointSize(14)
self.label.setFont(font)
self.label.setObjectName("label")
self.sort_method = QtWidgets.QComboBox(self.centralwidget)
self.sort_method.setGeometry(QtCore.QRect(460, 80, 171, 21))
font = QtGui.QFont()
font.setPointSize(11)
self.sort_method.setFont(font)
self.sort_method.setObjectName("sort_method")
self.sort_method.addItem("")
self.sort_method.addItem("")
self.sort_method.addItem("")
self.sort_method.addItem("")
self.label_2 = QtWidgets.QLabel(self.centralwidget)
self.label_2.setGeometry(QtCore.QRect(460, 40, 161, 31))
font = QtGui.QFont()
font.setPointSize(14)
self.label_2.setFont(font)
self.label_2.setObjectName("label_2")
self.url_input = QtWidgets.QLineEdit(self.centralwidget)
self.url_input.setGeometry(QtCore.QRect(130, 49, 291, 21))
font = QtGui.QFont()
font.setPointSize(11)
self.url_input.setFont(font)
self.url_input.setObjectName("url_input")
self.max_pages = QtWidgets.QLabel(self.centralwidget)
self.max_pages.setGeometry(QtCore.QRect(280, 160, 311, 61))
font = QtGui.QFont()
font.setPointSize(11)
self.max_pages.setFont(font)
self.max_pages.setObjectName("max_pages")
self.page_input = QtWidgets.QLineEdit(self.centralwidget)
self.page_input.setGeometry(QtCore.QRect(180, 180, 41, 21))
self.page_input.setObjectName("page_input")
self.label_3 = QtWidgets.QLabel(self.centralwidget)
self.label_3.setGeometry(QtCore.QRect(10, 170, 141, 41))
font = QtGui.QFont()
font.setPointSize(11)
self.label_3.setFont(font)
self.label_3.setObjectName("label_3")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 639, 21))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
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.lets_parse.setText(_translate("MainWindow", "Cпарсить"))
self.label.setText(_translate("MainWindow", "Url адресс:"))
self.sort_method.setItemText(0, _translate("MainWindow", "без сортировки"))
self.sort_method.setItemText(1, _translate("MainWindow", "дешевле"))
self.sort_method.setItemText(2, _translate("MainWindow", "дороже"))
self.sort_method.setItemText(3, _translate("MainWindow", "по дате"))
self.label_2.setText(_translate("MainWindow", "Метод сортировки"))
self.max_pages.setText(_translate("MainWindow", "Максимальное количество страниц : "))
self.label_3.setText(_translate("MainWindow", "Количесиво страниц"))
class Window(QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
# !!! тут ваша логика vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
self.url_input.editingFinished.connect(self.url_redactor) # +++
# или так
#self.url_input.returnPressed.connect(self.url_redactor) # +++
def url_redactor(self):
print(self.url_input.text())
if __name__ == "__main__":
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
