2016-12-14 51 views
1

我使用pyqt5和QtDesigner創建了兩個窗口的應用程序。主窗口「MainWindow.ui」上的按鈕應該從文件「age_entry.ui」打開第二個窗口,但我似乎缺少一些東西。點擊第一個窗體上的按鈕產生這個錯誤「:用pyqt5和qt設計器打開第二個窗口

異常 」未處理的類型錯誤「 QDialog的(父:QWidget的=無,國旗:聯盟[Qt.WindowFlags,Qt.WindowType] = Qt.WindowFlags() ):參數1有意想不到的類型 '布爾'

下面是主窗口中的代碼:

# -*- coding: utf-8 -*- 

import sys 
from PyQt5 import uic, QtWidgets 


Ui_MainWindow, QtBaseClass = uic.loadUiType("MainWindow.ui") 
LandingPageUI, LandingPageBase = uic.loadUiType("age_entry.ui") 

class MyApp(QtWidgets.QMainWindow, Ui_MainWindow): 

    def __init__(self): 
     QtWidgets.QMainWindow.__init__(self) 
     Ui_MainWindow.__init__(self) 
     self.setupUi(self) 

     def showAgeEntryForm(self): 
      self.child_win = AgeEntryForm(self) 
      self.child_win.show()    

     self.btnOpenAges.clicked.connect(showAgeEntryForm)    


class AgeEntryForm(LandingPageBase, LandingPageUI): 
    def __init__(self, parent=None): 
     LandingPageBase.__init__(self, parent) 
     self.setupUi(self)    



if __name__ == "__main__": 
    app=QtWidgets.QApplication.instance() 
    if not app: 
     app = QtWidgets.QApplication(sys.argv) 

    window = MyApp() 
    window.show() 
    sys.exit(app.exec_()) 

在此先感謝

這裏是主窗口,並以代碼的形式age_entry文件:

# -*- coding: utf-8 -*- 

# Form implementation generated from reading ui file 'MainWindow.ui' 
# 
# Created by: PyQt5 UI code generator 5.7 
# 
# WARNING! All changes made in this file will be lost! 

from PyQt5 import QtCore, QtGui, QtWidgets 

class Ui_MainWindow(object): 
    def setupUi(self, MainWindow): 
     MainWindow.setObjectName("MainWindow") 
     MainWindow.resize(526, 338) 
     self.centralwidget = QtWidgets.QWidget(MainWindow) 
     self.centralwidget.setObjectName("centralwidget") 
     self.label_9 = QtWidgets.QLabel(self.centralwidget) 
     self.label_9.setGeometry(QtCore.QRect(90, 10, 341, 41)) 
     font = QtGui.QFont() 
     font.setPointSize(16) 
     font.setBold(True) 
     font.setWeight(75) 
     self.label_9.setFont(font) 
     self.label_9.setObjectName("label_9") 
     self.btnOpenAges = QtWidgets.QPushButton(self.centralwidget) 
     self.btnOpenAges.setGeometry(QtCore.QRect(130, 90, 181, 61)) 
     self.btnOpenAges.setObjectName("btnOpenAges") 
     MainWindow.setCentralWidget(self.centralwidget) 
     self.menubar = QtWidgets.QMenuBar(MainWindow) 
     self.menubar.setGeometry(QtCore.QRect(0, 0, 526, 21)) 
     self.menubar.setObjectName("menubar") 
     MainWindow.setMenuBar(self.menubar) 
     self.statusbar = QtWidgets.QStatusBar(MainWindow) 
     self.statusbar.setObjectName("statusbar") 
     MainWindow.setStatusBar(self.statusbar) 

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

    def retranslateUi(self, MainWindow): 
     _translate = QtCore.QCoreApplication.translate 
     MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) 
     self.label_9.setText(_translate("MainWindow", "Ageing Session Management")) 
     self.btnOpenAges.setText(_translate("MainWindow", "Enter Ages")) 

而且age_entry.ui

# -*- coding: utf-8 -*- 

# Form implementation generated from reading ui file 'age_entry.ui' 
# 
# Created by: PyQt5 UI code generator 5.7 
# 
# WARNING! All changes made in this file will be lost! 

from PyQt5 import QtCore, QtGui, QtWidgets 

class Ui_Dialog(object): 
    def setupUi(self, Dialog): 
     Dialog.setObjectName("Dialog") 
     Dialog.resize(350, 189) 
     self.label_13 = QtWidgets.QLabel(Dialog) 
     self.label_13.setGeometry(QtCore.QRect(90, 20, 451, 61)) 
     font = QtGui.QFont() 
     font.setPointSize(14) 
     self.label_13.setFont(font) 
     self.label_13.setObjectName("label_13") 

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

    def retranslateUi(self, Dialog): 
     _translate = QtCore.QCoreApplication.translate 
     Dialog.setWindowTitle(_translate("Dialog", "Dialog")) 
     self.label_13.setText(_translate("Dialog", "Age Entry Form")) 
+0

你可以發表一個例子MainWindow.ui和age_entry.ui,即一個最小,完整和可驗證的例子請參閱http://stackoverflow.com/help/mcve? –

+0

有沒有辦法在SO問題中包含文件? – jshort

+0

您可以在代碼中包含問題源代碼的最小示例嗎? –

回答

1

兩個問題你的縮進是錯誤的。其次你失去了自我。在showAgeEntryForm上。試試這個:

def __init__(self): 
    QtWidgets.QMainWindow.__init__(self) 
    Ui_MainWindow.__init__(self) 
    self.setupUi(self) 
    self.btnOpenAges.clicked.connect(self.showAgeEntryForm) 

def showAgeEntryForm(self): 
    self.child_win = AgeEntryForm(self) 
    self.child_win.show() 
+0

謝謝@ Dan-Dev!這是訣竅。之前沒有正確的繼承。 – jshort

相關問題