我无法让我的 GUI 使用 PySide 加载和识别按钮

I can't get my GUI to load and recognize buttons using PySide

这是我遇到的错误,我真的很困惑。我正在加载的 UI 文件具有此按钮名称并且它匹配。但由于某种原因,它似乎无法识别和加载它。我只是尝试将此代码转换为 PySide(它最初是 PyQt)。我是不是翻译错了?

错误:AttributeError:文件第 25 行:'swapRefGUI' 对象没有属性 'swapRefBtn' #

from PySide import QtCore, QtGui, QtUiTools
import maya.cmds as cmds

class swapRefGUI(QDialog):
    def __init__(self, parent=None):
        QDialog.__init__(self, parent)

        loader = QtUiTools.QUiLoader()
        uifile = QtCore.QFile('C:\Scripts\swapRef.ui')
        uifile.open(QtCore.QFile.ReadOnly)
        ui = loader.load(uifile, parent)
        uifile.close()

        self.setFixedSize(400, 300)

        self.swapRefBtn.clicked.connect(self.swapRefBtn_clicked)
        self.closeBtn.clicked.connect(self.close)               

    def swapRefBtn_clicked(self):
        pass                          

if __name__ == "__main__": 
    #app = QApplication(sys.argv)
    app = QApplication.instance()
    if app is None:
        app = QApplication(sys.argv)    
    myGUI = swapRefGUI(None)
    myGUI.show()
    sys.exit(app.exec_())

现在您正在尝试通过 class 实例 swapRefGUI 访问 swapRefBtn,但实际上您需要通过加载的 ui 变量访问它。 loader.load 的第二个参数也应该是 self 以在你的 window 中显示 qt gui。还有一些情况下,您尝试从 PySide 访问对象,例如 QDialog,而它应该是 QtGui.QDialog(因为您导入 PySide 模块的方式)。

这是一些与 ui 文件一起工作的代码。

from PySide import QtCore, QtGui, QtUiTools
import maya.cmds as cmds

class swapRefGUI(QtGui.QDialog):
    def __init__(self, parent=None):
        QtGui.QDialog.__init__(self, parent)

        loader = QtUiTools.QUiLoader()
        uifile = QtCore.QFile('C:\Scripts\swapRef.ui')
        uifile.open(QtCore.QFile.ReadOnly)
        self.ui = loader.load(uifile, self) # Qt objects are inside ui, so good idea to save the variable to the class, 2nd arg should refer to self
        uifile.close()

        self.setFixedSize(400, 300)

        self.ui.swapRefBtn.clicked.connect(self.swapRefBtn_clicked) # Need to access button through self.ui
        #self.ui.closeBtn.clicked.connect(self.close) # This needs to have an existing function in the class or it will crash when executing

    def swapRefBtn_clicked(self):
        print 'WORKS'  

myGUI = swapRefGUI()
myGUI.show()