首页 > 解决方案 > 将 PyQt QLineEdit 文本作为参数传递

问题描述

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

标签: pythonpyqtpyqt5

解决方案


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

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

推荐阅读