将PyQt QLineEdit文本作为参数传递

2024-09-30 10:31:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图编辑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,这是它设置的原始值。我做错了什么


Tags: 函数文本self编辑部件vardefval
2条回答

如果您喜欢,程序将存储值“0”,并将其附加到editingFinished,而不是每次调用函数时都刷新它。所以你应该使用lambda(抱歉我的英语不好):

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

明白了

以下是最终代码:

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

因此,我们的想法是将对象本身作为参数发送,这样我就可以检索更新后的文本。事实证明,它可能将其解释为“发送此对象在编译时拥有的文本”。通过发送对象本身,问题得以解决

相关问题 更多 >

    热门问题