微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将 qpushbutton 连接到 lambda

如何解决将 qpushbutton 连接到 lambda

我正在为 Maya 创建一个 UI,我需要创建一堆按钮并将它们连接到一个传递它们名称函数我有这样的事情:

from pyside2 import QtWidgets

def my_def(arg):
    print("Name: {0}".format(arg))
    
bttns = ["a","b","c","d"]
bttns_objs = []
for b in bttns:
    bttn = QtWidgets.QPushButton()    
    bttn.setobjectName(b)
    bttn.clicked.connect(lambda x=bttn.objectName(): my_def(x))
    bttns_objs.append(bttn)
    
for b in bttns_objs:
    b.clicked.emit()

在此示例中,此代码在 Maya 2018 中运行良好,代码将打印每个对象的名称。 但是当我在 Maya 2020 上试用时,我得到的是“错误”。

我一直在阅读论坛,我意识到“clicked”传递了一个 bool arg,所以对象的名称从未传递给函数......而其他一些答案是使用像这样传递参数:

>
bttn.clicked.connect(lambda checked,x=n: my_def(n))

如果我这样做,它会返回一个错误

# TypeError: <lambda>() takes at least 1 argument (0 given)

在这里遗漏了什么?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。