2017-05-14 105 views
0

如何从第一个窗体调用第二个窗体? 例如,我有MainWindow.ui和Auth.ui. 当在主窗口上单击按钮时,如何显示Auth.ui? 我正在使用QtDesigner和pyuic来创建表单。PyQt5从另一个窗体调用另一个窗体

MainWindow.py

class MainWindow(object): 
def setupUi(self, MainWindow): 
    MainWindow.setObjectName("MainWindow") 
    MainWindow.resize(323, 118) 
    self.centralwidget = QtWidgets.QWidget(MainWindow) 
    self.centralwidget.setObjectName("centralwidget") 
    self.pb_request = QtWidgets.QPushButton(self.centralwidget) 
    self.pb_request.setObjectName("pb_request") 

    MainWindow.setCentralWidget(self.centralwidget) 
    self.pb_request.clicked.connect(...???) 
    self.retranslateUi(MainWindow) 
    QtCore.QMetaObject.connectSlotsByName(MainWindow) 

def retranslateUi(self, MainWindow): 
    _translate = QtCore.QCoreApplication.translate 
    MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) 
    self.pb_request.setText(_translate("MainWindow", "Request")) 
    self.label.setText(_translate("MainWindow", "Enter term you want to know")) 

def main(): 
    app = QtWidgets.QApplication(sys.argv) 
    Form = QtWidgets.QWidget() 
    ui = MainWindow() 
    ui.setupUi(Form) 
    Form.show() 
    sys.exit(app.exec_()) 
+0

要创建'MainWindow.ui'和你使用的模板'Auth.ui'在Qt Designer中:对话框,主窗口或工具? – eyllanesc

+0

Auth.ui - 对话窗口,MainWindow.ui - MainWindow –

回答

0

建议您不要修改使用Qt Designer生成的类,应该怎样做是创建一个使用生成的视图隐含逻辑的类。

例如当一个基于所述模板它产生类似于一个代码的视图:

class Ui_MainWindow(object): 
    def setupUi(self, MainWindow): 
     [...] 
    def retranslateUi(self, MainWindow): 
     [...] 

然后,必须创建实现逻辑的类:

class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): 
    def __init__(self, parent=None): 
     QtWidgets.QMainWindow.__init__(self, parent=parent) 
     self.setupUi(self) 

如果使用基于模板的视图:

  • 主窗口:创建一个cl基于QMainWindow的屁股。
  • 带按钮的对话框按钮对话框,带按钮的对话框,无按钮对话框:基于QDialog创建一个类。
  • 小工具:基于QWidget创建一个类。

假设你已经创建的类作为我建议:

class Ui_Auth(object): 
    def setupUi(self, Auth): 
     [...] 
    def retranslateUi(self, Auth): 
     [...] 

class Auth(QtWidgets.QDialog, Ui_Auth): 
    def __init__(self, parent=None): 
     QtWidgets.QDialog.__init__(self, parent=parent) 
     self.setupUi(self) 

class Ui_MainWindow(object): 
    def setupUi(self, MainWindow): 
     [...] 
    def retranslateUi(self, MainWindow): 
     [...] 

class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): 
    def __init__(self, parent=None): 
     QtWidgets.QMainWindow.__init__(self, parent=parent) 
     self.setupUi(self) 
     self.pb_request.clicked.connect(self.launch) 

    def launch(self): 
     auth = Auth() 
     auth.exec_() 
相关问题