簡體   English   中英

傳遞 PyQt QLineEdit 文本作為參數

[英]Passing PyQt QLineEdit text as parameter

我正在嘗試編輯 QLineEdit 小部件,然后將新文本作為參數發送到 function,但它始終返回原始文本而不是新文本。 這是代碼片段

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

然后是 sendValue function

    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,這是它設置的原始值。 我究竟做錯了什么?

如果您願意,程序將存儲值“0”並將其附加到 editingFinished 而不是每次調用 function 時都刷新它。 所以你應該使用 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

所以想法是將 object 本身作為參數發送,這樣我就可以檢索更新的文本。 事實證明,它可能將其解釋為“發送此 object 在編譯時具有的文本”。 通過發送 object 本身,問題得到解決。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM