Python 使用命名插槽从PyQt移动到PySide

Python 使用命名插槽从PyQt移动到PySide,python,pyqt,pyside,maya,Python,Pyqt,Pyside,Maya,我正在将我们的一些脚本从PyQt移到PySide,并且有一个关于插槽名称的问题。对于上下文,我们的UI是使用Qt设计器创建的。另存为.ui文件。使用pyside uic转换为.py文件。然后在Autodesk Maya内部使用这些脚本 生成的.py脚本使用以下命令将信号连接到插槽: QtCore.QMetaObject.connectSlotsByName(对话框) 这将查找\u()上名为的插槽,例如\u按钮上名为的插槽 在前面的PyQt4中,我们将插槽命名为: @QtCore.pyqtSlot

我正在将我们的一些脚本从PyQt移到PySide,并且有一个关于插槽名称的问题。对于上下文,我们的UI是使用Qt设计器创建的。另存为
.ui
文件。使用
pyside uic
转换为
.py
文件。然后在Autodesk Maya内部使用这些脚本

生成的
.py
脚本使用以下命令将信号连接到插槽:
QtCore.QMetaObject.connectSlotsByName(对话框)

这将查找\u()上名为
的插槽
,例如\u按钮上名为
的插槽

在前面的PyQt4中,我们将插槽命名为:

@QtCore.pyqtSlot( name = "on_pushButton_clicked" )
def testButton_pressed( self ):
    print "pressed button"
在PySide中,这变成:

@QtCore.Slot( name = "on_pushButton_clicked" )
def testButton_pressed( self ):
    print "pressed button"

这对PyQt有效,但对PySide无效。PySide不再识别插槽中的“name”参数。解决方法是将
testButton\u pressed()
函数重命名为
on\u button\u clicked()
,但我不希望对所有脚本都这样做。有没有更好的方法让PySide识别slot“name”参数?

这显然是一个bug。表示支持
名称
参数,但在信号触发时会产生
运行时错误
(使用版本1.2.1)。如果没有
name
参数,信号工作正常

按名称连接插槽的机制肯定仍然存在,因为故意使用无效名称,例如:

    @QtCore.Slot(name='on_button_clickedXXX')
    def foo(self):
        print('on_button_clicked')
产生以下错误:

    QMetaObject::connectSlotsByName: No matching signal for on_button_clickedXXX()
这样做:

@QtCore.Slot(str) 
def on_pushButton_clicked(self, name = "on_pushButton_clicked"):
    print "pressed button"

那对我不起作用。我要求函数名与“name”属性不同。ex.def按钮点击(self,name=“on_button_clicked”):