问题描述
我正在为 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 (将#修改为@)