我正在尝试在循环中创建一系列按钮。每个按钮都会获得一个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)
当我单击该按钮时,收到一条错误消息,指出“布尔对象没有文本属性”
我尝试直接传递订单号,它会打印“False”,所以仍然是一个布尔值。我不知道布尔值来自何处,信号中一定是错误的。
答案 0 :(得分:1)
clicked
信号始终发送按钮的已检查状态。这将使用布尔值覆盖您的button
参数,这就是您获得属性错误的原因。所以你应该这样建立连接:
ui.cmdOpen.clicked.connect(
lambda checked, button=ui.cmdOpen: displayOrder(ui, button))