Передача текста PyQt QLineEdit в качестве параметра - PullRequest
0 голосов
/ 06 апреля 2020

Я пытаюсь отредактировать виджет QLineEdit и затем отправить новый текст в качестве параметра функции, но он всегда возвращает оригинальный текст вместо нового текста. Вот фрагмент кода

self.shortCoffee1Label = QLineEdit("0")
self.shortCoffee1Label.editingFinished.connect(self.sendValue(48, int(self.shortCoffee1Label.text())))

, а затем функция sendValue

    def sendValue(self, var, val):
        def emmitValue():
            self.messageReceived.setText("Sending new value...")
            print("var received: " + str(var))
            print("val received: " + str(val))
            self.thread.sendValue(var, val)
        return emmitValue

Но val всегда равен 0, что является исходным значением, которое было установлено. Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 07 апреля 2020

Понял.

Вот окончательный код:

self.shortCoffee1Label.editingFinished.connect(self.sendValue(48, self.shortCoffee1Label))

 def sendValue(self, var, val):
        def emmitValue():
            self.messageReceived.setText("Sending new value...")
            print("var received: " + str(var))
            print("val received: " + str(int(val.text())))
            self.thread.sendValue(var, int(val.text()))
        return emmitValue

Поэтому идея была в том, чтобы отправить сам объект в качестве параметра, чтобы я мог получить обновленный текст. Как оказалось, это может быть интерпретировано как «отправить текст, который этот объект имел при компиляции». При отправке самого объекта проблема была решена.

0 голосов
/ 06 апреля 2020

Если вам так нравится, программа сохранит значение «0» и добавит его к editFinished вместо того, чтобы обновлять его каждый раз, когда вы вызываете функцию. Таким образом, вы должны использовать лямбда (извините за мой плохой Engli sh):

self.shortCoffee1Label = QLineEdit("0")
self.shortCoffee1Label.editingFinished.connect(lambda: self.sendValue(48, int(self.shortCoffee1Label.text())))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...