2014-04-02 43 views
2

这是我的主程序,点击按钮后会打开新窗口,在这里我想打开新窗口但它给错误类型:TypeError:必须使用Ui_Form实例调用unbound方法setupUi()作为第一个参数(改为获得QDialog实例)

from PyQt4 import QtCore, QtGui 

try: 
    _fromUtf8 = QtCore.QString.fromUtf8 
except AttributeError: 
    _fromUtf8 = lambda s: s 

class Ui_NnAdcModeling(object): 
    def setupUi(self, NnAdcModeling): 
    NnAdcModeling.setObjectName(_fromUtf8("NnAdcModeling")) 
    NnAdcModeling.resize(612, 316) 
    self.centralWidget = QtGui.QWidget(NnAdcModeling) 
    self.centralWidget.setObjectName(_fromUtf8("centralWidget")) 
    self.label = QtGui.QLabel(self.centralWidget) 
    self.label.setGeometry(QtCore.QRect(10, 14, 601, 20)) 
    self.label.setObjectName(_fromUtf8("label")) 
    self.layoutWidget = QtGui.QWidget(self.centralWidget) 
    self.layoutWidget.setGeometry(QtCore.QRect(21, 214, 570, 29)) 
    self.layoutWidget.setObjectName(_fromUtf8("layoutWidget")) 
    self.horizontalLayout = QtGui.QHBoxLayout(self.layoutWidget) 
    self.horizontalLayout.setMargin(0) 
    self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout")) 
    self.pushButton_2 = QtGui.QPushButton(self.layoutWidget) 
    self.pushButton_2.setMinimumSize(QtCore.QSize(201, 0)) 
    self.pushButton_2.setObjectName(_fromUtf8("pushButton_2")) 
    self.horizontalLayout.addWidget(self.pushButton_2) 
    NnAdcModeling.setCentralWidget(self.centralWidget) 
    self.menuBar = QtGui.QMenuBar(NnAdcModeling) 
    self.menuBar.setGeometry(QtCore.QRect(0, 0, 612, 25)) 
    self.menuBar.setObjectName(_fromUtf8("menuBar")) 
    NnAdcModeling.setMenuBar(self.menuBar) 
    self.mainToolBar = QtGui.QToolBar(NnAdcModeling) 
    self.mainToolBar.setObjectName(_fromUtf8("mainToolBar")) 
    NnAdcModeling.addToolBar(QtCore.Qt.TopToolBarArea, self.mainToolBar) 
    self.statusBar = QtGui.QStatusBar(NnAdcModeling) 
    self.statusBar.setObjectName(_fromUtf8("statusBar")) 
    NnAdcModeling.setStatusBar(self.statusBar) 

    self.retranslateUi(NnAdcModeling) 
    QtCore.QMetaObject.connectSlotsByName(NnAdcModeling) 

    self.pushButton_2.clicked.connect(self.showNnInput) 

    def retranslateUi(self, NnAdcModeling): 
    NnAdcModeling.setWindowTitle(QtGui.QApplication.translate("NnAdcModeling", "NnAdcModeling", None, QtGui.QApplication.UnicodeUTF8)) 
    self.pushButton_2.setText(QtGui.QApplication.translate("NnAdcModeling", "New Window", None, QtGui.QApplication.UnicodeUTF8)) 

    def showNnInput(self): 
    from nninput import Ui_NnInput 
    ui = Ui_NnInput 
    ui.setupUi(QtGui.QDialog()) 
    ui.NnInput.exec_() 


if __name__ == "__main__": 
    import sys 
    app = QtGui.QApplication(sys.argv) 
    NnAdcModeling = QtGui.QMainWindow() 
    ui = Ui_NnAdcModeling() 
    ui.setupUi(NnAdcModeling) 
    NnAdcModeling.show() 
    sys.exit(app.exec_()) 

和我的另一个类Ui_NnInput是:

from PyQt4 import QtCore, QtGui 

try: 
    _fromUtf8 = QtCore.QString.fromUtf8 
except AttributeError: 
    _fromUtf8 = lambda s: s 

class Ui_NnInput(object): 
    def setupUi(self, NnInput): 
    self.NnInput=NnInput 
    NnInput.setObjectName(_fromUtf8("NnInput")) 
    NnInput.resize(532, 180) 
    self.label = QtGui.QLabel(NnInput) 
    self.label.setGeometry(QtCore.QRect(120, 10, 301, 20)) 
    self.label.setMaximumSize(QtCore.QSize(301, 20)) 
    self.label.setObjectName(_fromUtf8("label")) 
    self.layoutWidget = QtGui.QWidget(NnInput) 
    self.layoutWidget.setGeometry(QtCore.QRect(20, 130, 491, 29)) 
    self.layoutWidget.setObjectName(_fromUtf8("layoutWidget")) 
    self.horizontalLayout_3 = QtGui.QHBoxLayout(self.layoutWidget) 
    self.horizontalLayout_3.setMargin(0) 
    self.horizontalLayout_3.setObjectName(_fromUtf8("horizontalLayout_3")) 
    self.pushButton = QtGui.QPushButton(self.layoutWidget) 
    self.pushButton.setMaximumSize(QtCore.QSize(51, 27)) 
    self.pushButton.setObjectName(_fromUtf8("pushButton")) 
    self.horizontalLayout_3.addWidget(self.pushButton) 
    self.pushButton_2 = QtGui.QPushButton(self.layoutWidget) 
    self.pushButton_2.setMaximumSize(QtCore.QSize(151, 27)) 
    self.pushButton_2.setObjectName(_fromUtf8("pushButton_2")) 
    self.horizontalLayout_3.addWidget(self.pushButton_2) 
    self.pushButton_4 = QtGui.QPushButton(self.layoutWidget) 
    self.pushButton_4.setMaximumSize(QtCore.QSize(41, 27)) 
    self.pushButton_4.setObjectName(_fromUtf8("pushButton_4")) 
    self.horizontalLayout_3.addWidget(self.pushButton_4) 
    self.label_3 = QtGui.QLabel(NnInput) 
    self.label_3.setGeometry(QtCore.QRect(10, 40, 161, 17)) 
    self.label_3.setMaximumSize(QtCore.QSize(161, 17)) 
    self.label_3.setObjectName(_fromUtf8("label_3")) 
    self.layoutWidget_2 = QtGui.QWidget(NnInput) 
    self.layoutWidget_2.setGeometry(QtCore.QRect(120, 70, 252, 25)) 
    self.layoutWidget_2.setObjectName(_fromUtf8("layoutWidget_2")) 
    self.horizontalLayout_2 = QtGui.QHBoxLayout(self.layoutWidget_2) 
    self.horizontalLayout_2.setMargin(0) 
    self.horizontalLayout_2.setObjectName(_fromUtf8("horizontalLayout_2")) 
    self.horizontalLayout = QtGui.QHBoxLayout() 
    self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout")) 
    self.label_2 = QtGui.QLabel(self.layoutWidget_2) 
    self.label_2.setMaximumSize(QtCore.QSize(101, 17)) 
    self.label_2.setObjectName(_fromUtf8("label_2")) 
    self.horizontalLayout.addWidget(self.label_2) 
    self.lineEdit = QtGui.QLineEdit(self.layoutWidget_2) 
    self.lineEdit.setMaximumSize(QtCore.QSize(71, 21)) 
    self.lineEdit.setObjectName(_fromUtf8("lineEdit")) 
    self.horizontalLayout.addWidget(self.lineEdit) 
    self.horizontalLayout_2.addLayout(self.horizontalLayout) 
    self.pushButton_3 = QtGui.QPushButton(self.layoutWidget_2) 
    self.pushButton_3.setMaximumSize(QtCore.QSize(71, 21)) 
    self.pushButton_3.setObjectName(_fromUtf8("pushButton_3")) 
    self.horizontalLayout_2.addWidget(self.pushButton_3) 
    self.lineEdit_2 = QtGui.QLineEdit(NnInput) 
    self.lineEdit_2.setGeometry(QtCore.QRect(170, 40, 351, 21)) 
    self.lineEdit_2.setObjectName(_fromUtf8("lineEdit_2")) 

    self.retranslateUi(NnInput) 
    QtCore.QMetaObject.connectSlotsByName(NnInput) 

    def retranslateUi(self, NnInput): 
    NnInput.setWindowTitle(QtGui.QApplication.translate("NnInput", "Form", None, QtGui.QApplication.UnicodeUTF8)) 
    self.label.setText(QtGui.QApplication.translate("NnInput", "", None, QtGui.QApplication.UnicodeUTF8)) 
    self.pushButton.setText(QtGui.QApplication.translate("NnInput", "Done", None, QtGui.QApplication.UnicodeUTF8)) 
    self.pushButton_2.setText(QtGui.QApplication.translate("NnInput", "Show Input Pattern", None, QtGui.QApplication.UnicodeUTF8)) 
    self.pushButton_4.setText(QtGui.QApplication.translate("NnInput", "Exit", None, QtGui.QApplication.UnicodeUTF8)) 
    self.label_3.setText(QtGui.QApplication.translate("NnInput", "Path for Input Pattern :", None, QtGui.QApplication.UnicodeUTF8)) 
    self.label_2.setText(QtGui.QApplication.translate("NnInput", "Target Value :", None, QtGui.QApplication.UnicodeUTF8)) 
    self.lineEdit.setText(QtGui.QApplication.translate("NnInput", "0.000000", None, QtGui.QApplication.UnicodeUTF8)) 
    self.pushButton_3.setText(QtGui.QApplication.translate("NnInput", "Generate", None, QtGui.QApplication.UnicodeUTF8)) 
    self.lineEdit_2.setText(QtGui.QApplication.translate("NnInput", "", None, QtGui.QApplication.UnicodeUTF8)) 

但它运行后,它给下面的错误。请建议我的代码中出现了什么问题,请更改以纠正它。即将出现的错误是:

Traceback (most recent call last): 
File "nnadcmodeling2.py", line 51, in showNnInput 
    ui.setupUi(QtGui.QDialog()) 
TypeError: unbound method setupUi() must be called with Ui_NnInput instance as first  argument (got QDialog instance instead) 

回答

3

那里的代码太多了。

,但此行中Ui_NnAdcModeling.showNnInput:

ui = Ui_NnInput 

应该

ui = Ui_NnInput() 

,让你实例化一个对象UI_Nninput,而不仅仅是创建的类的引用。

+0

哦......这是愚蠢的问题,thnx – lkkkk

+0

它应该被关闭吗? –

相关问题