PyQt4文件名对话框

| 我是一个新手,所以请客气;-) 我有一个使用PyQt4和python 2.6并带有工作文件对话框的GUI(即,您单击了一个按钮,然后弹出了一个窗口,允许您选择要加载/保存的文件)。 GUI的代码就像2000行,所以我将包括我认为重要的部分:
from PyQt4 import QtGui as qt
from PyQt4 import QtCore as qc

class NuclearMotion(qt.QWidget):
    def __init__(self, parent=None):
        super(NuclearMotion, self).__init__(parent)

        file_button = qt.QPushButton(\"Use data from file\")
        mainLayout = qt.QGridLayout()
        mainLayout.addWidget(file_button, 14, 8, 1, 2)

    def choose_file():
        file_name = qt.QFileDialog.getOpenFileName(self, \"Open Data File\", \"\", \"CSV data files (*.csv)\")

        self.connect(file_button, qc.SIGNAL(\"clicked()\"), choose_file)
        self.setLayout(mainLayout)

    if __name__ == \'__main__\':
        import sys
        app = qt.QApplication(sys.argv)
        NuclearMotionWidget = NuclearMotion()
        NuclearMotionWidget.show()
        sys.exit(app.exec_())
以上工作绝对好。我使用各种教程手动输入了所有代码。我现在使用QT设计器和pyuic4制作了一个新的GUI,将其转换为.py文件。现在,我无法使文件对话框正常工作。以下代码导致类型错误:
from PyQt4 import QtCore, QtGui

class Ui_mainLayout(object):
    def setupUi(self, mainLayout):
        mainLayout.setObjectName(_fromUtf8(\"mainLayout\"))
        mainLayout.resize(598, 335)
        mainLayout.setTabPosition(QtGui.QTabWidget.North)
        mainLayout.setTabShape(QtGui.QTabWidget.Rounded)
        mainLayout.setElideMode(QtCore.Qt.ElideLeft)

        self.basic_tab = QtGui.QWidget()
        self.file_button = QtGui.QPushButton(self.basic_tab)
        QtCore.QObject.connect(self.file_button, QtCore.SIGNAL(\"clicked()\"), self.choose_file)

    def choose_file(self):
        file_name = QtGui.QFileDialog.getOpenFileName(self, \"Open Data File\", \"\", \"CSV data files (*.csv)\")

if __name__ == \"__main__\":
    import sys
    app = QtGui.QApplication(sys.argv)
    mainLayout = QtGui.QTabWidget()
    ui = Ui_mainLayout()
    ui.setupUi(mainLayout)
    mainLayout.show()
    sys.exit(app.exec_())
这段代码可以很好地生成GUI,并且其他一切都可以正常工作,包括信号。知道我做错了吗!?     
已邀请:
        您的类应该(直接或间接地)从QtCore.QObject继承,以便能够处理信号。第一个继承自QWidget,它完成了这项工作。     

要回复问题请先登录注册