gpt4 book ai didi

python - 无法从 Python 循环中创建的按钮发送信号

转载 作者:太空宇宙 更新时间:2023-11-03 16:01:27 24 4
gpt4 key购买 nike

我正在尝试在循环中创建一系列按钮。每个按钮都会获得一个 id 号作为文本,当单击该按钮时,它应该将 id 号发送到一个将打开存档订单的函数。此时我只想打印订单号来证明信号有效并且每个按钮都连接到了正确的订单号。

ui.cmdOpen = QtWidgets.QPushButton(ui.frOrdHist)
ui.cmdOpen.setGeometry(QtCore.QRect(269, line1Y, 61, 22))
ui.cmdOpen.setText(iOrderId)
ui.cmdOpen.setObjectName("cmdOpen")
ui.cmdOpen.clicked.connect(lambda button=ui.cmdOpen:displayOrder(ui, button))


def displayOrder(ui, button):
i = button.text()
print(i)

当我单击按钮时,收到一条错误消息,显示“ bool 对象没有文本属性”

我尝试直接传递订单号,它会打印“False”,所以仍然是一个 bool 值。我不知道 bool 值是从哪里来的,信号一定有问题。

最佳答案

clicked signal始终发送按钮的选中状态。因此,这将用 bool 值覆盖您的默认 button 参数,这就是您收到 AttributeError 的原因(即因为 bool 没有该方法)。您应该像这样建立连接:

ui.cmdOpen.clicked.connect(
lambda checked, button=ui.cmdOpen: displayOrder(ui, button))
<小时/>

PS:此问题的另一个常见来源是 triggered signal QAction 的。如果您发现您的插槽接收到意外的输入,则始终值得检查 Qt 文档以查看信号签名是否具有任何带有默认值的参数 - 即看起来像这样:

void QSomeClass::someSignal(bool param = false)

关于python - 无法从 Python 循环中创建的按钮发送信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40309891/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com