Я пытаюсь отредактировать виджет 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, что является исходным значением, на которое он был установлен. Что я делаю не так?
Function()
, но вы предоставляете ему функцию - также известный какFunction
тогда, если у вас есть параметры вы хотите передать, что вы делаете это внутри этой функции, поэтому у нас будет этоself.shortCoffee1Label.editingFinished.connect(self.SendNewValue)
, тогда вdef SendNewValue(self):
у вас будет строка, которая вызывает то, что вы хотите, используя параметры следующим образом: - person Dennis Jensen   schedule 06.04.2020self.sendValue(48, int(self.shortCoffee1Label.text()))
, и это все, что вам нужно в этой функции, или есть другие способы сделать это, которые в равной степени менее сложны, чем добавление лямбда-выражения, поскольку это нарушает K.I.S.S. правило программирования (Keep It Simple and Smart), добавляя ненужную сложность, чтобы вместить как можно больше в одну строку кода, что уже давно доказало свою плохую методологию. - person Dennis Jensen   schedule 06.04.2020