python - 将 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,这是它设置的原始值。我究竟做错了什么?
解决方案
如果您愿意,程序将存储值“0”并将其附加到editingFinished,而不是每次调用该函数时都刷新它。所以你应该使用 lambda(对不起我的英语不好):
self.shortCoffee1Label = QLineEdit("0")
self.shortCoffee1Label.editingFinished.connect(lambda: self.sendValue(48, int(self.shortCoffee1Label.text())))
推荐阅读
- apache-flink - 如何在 flink 中使用 multiset?
- python - 使用 scipy 的 python 目标搜索概念
- javascript - 类型 Navigator angular 13 上不存在 msSaveOrOpenBlob 属性
- hammerspoon - 在 Monterey 上,虽然 NSSecureTextField 有焦点,但 Hammerspoon 不能再将另一个应用程序带到前台
- python - Python:获取网络请求响应正文
- javascript - 如何修复状态数组不会在反应中附加新对象
- javascript - HTML中拖放行时如何使行号自动调整
- django - 如何在 Django 中添加指向引导导航栏的链接?
- azure - 创建 Azure 管道
- java - 日历不考虑时区偏移