如何解决将 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 举报,一经查实,本站将立刻删除。