@studprogrammist

PyQt записать в lineEdit по нажатию кнопки?

# -*- coding: utf-8 -*-

from PyQt5 import QtWidgets, uic
import sys

class MyWindow(QtWidgets.QWidget):
    def __init__(self, parent = None):
        QtWidgets.QWidget.__init__(self, parent)
        Form, Base = uic.loadUiType("window.ui")
        self.ui = Form()
        self.ui.setupUi(self)
        self.ui.lineEdit.setText("Text")  # Пример №1
        self.ui.btnQuit.clicked.connect(self.ui.lineEdit.setText("Text"))  # Пример №2


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    window = MyWindow()
    window.show()
    sys.exit(app.exec_())


Подскажите пожалуйста, почему пример №1 работает, а пример №2 нет?
Буду рад ссылке на годный материал для изучения:)
  • Вопрос задан
  • 733 просмотра
Пригласить эксперта
Ответы на вопрос 2
@bbkmzzzz
Можно так:
self.ui.btnQuit.clicked.connect(lambda: self.ui.lineEdit.setText("Text"))  # Пример №2

или привязать к методу
# -*- coding: utf-8 -*-

from PyQt5 import QtWidgets, uic
import sys

class MyWindow(QtWidgets.QWidget):
    def __init__(self, parent = None):
        QtWidgets.QWidget.__init__(self, parent)
        Form, Base = uic.loadUiType("window.ui")
        self.ui = Form()
        self.ui.setupUi(self)
        self.ui.lineEdit.setText("Text")  # Пример №1

        self.ui.btnQuit.clicked.connect(self.setmytext))  # Пример №2 Внимательно со скобками, нам нужно
                                                                                   #передать метод, но не результат его выполнения!

    def setmytext(self):
        self.ui.lineEdit.setText("Text")

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    window = MyWindow()
    window.show()
    sys.exit(app.exec_())
Ответ написан
Комментировать
@arama92
https://www.tutorialspoint.com/pyqt/index.htm
cliced.connect(функция)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы