PyQt5 多窗口跳转

窗口跳转思路

在各个窗口类方法实例化需要跳转的窗口类,再调用 .show() 方法展示新窗口即可。

示例代码

class mywindow(QtWidgets.QMainWindow, Ui_MainWindow):
    """ 开始窗口: 连接窗口 """
    def __init__(self):
        super(mywindow, self).__init__()
        self.setupUi(self)
        self.m_ui = MainInterface()
        self.success = False

    # 跳转主界面
    def COMJumpMainInterface(self):
        self.hide()
        if self.success:
            self.m_ui.show()
        else:
            QMessageBox.warning(self, "test", "test return")
            self.show()

    def TCPJumpMainInterface(self):
        self.hide()
        self.success = True
        self.m_ui.show()

        # self.setWindowFlags(Qt.SubWindow)
        # self.Write_tableWidget.setItem(0, 2, QtWidgets.QTableWidgetItem(str(100)))


class MainInterface(QtWidgets.QWidget, Ui_Form):
    """  主界面: 展示系统各个模块 """
    def __init__(self):
        super(MainInterface, self).__init__()
        self.setupUi(self)
        self.ui = ''

    def return_main(self):
        self.close()
        self.ui = mywindow()
        self.ui.show()

    def showAddInterface(self):
        self.close()
        self.ui = AddOrDeleteInterface()
        self.ui.show()

    def showSYSTempInterface(self):
        self.close()
        self.ui = SYSTempInterface()
        self.ui.show()


class AddOrDeleteInterface(QtWidgets.QWidget, Ui_Form_Add_delete):
    """ 子模块:添加/删除接口 """
    def __init__(self):
        super(AddOrDeleteInterface, self).__init__()
        self.setupUi(self)
        self.ui = ''

    def return_main(self):
        self.close()
        self.ui = MainInterface()
        self.ui.show()


class SYSTempInterface(QtWidgets.QWidget, Ui_sysTemp):
    """  子模块:系统参数模块 """
    def __init__(self):
        super(SYSTempInterface, self).__init__()
        self.setupUi(self)
        self.ui = ''
        self.center()

    def center(self):
        screen = QDesktopWidget().screenGeometry()
        size = self.geometry()
        self.move((screen.width() - size.width()) / 2,
                  (screen.height() - size.height()) / 2)

    def return_main(self):
        self.close()
        self.ui = MainInterface()
        self.ui.show()


if __name__ == '__main__':

    app = QtWidgets.QApplication(sys.argv)
    ui = mywindow()
    ui.show()

备注

这里代码仅供参考思路、不可运行,没有环境
QMainWindow 控件之间的多窗口没有测试,网上说不行
QWidget 控件之间的多窗口可以跳转
QMainWindow 控件和 QWidget 控件可以相互跳转

猜你喜欢

转载自blog.csdn.net/Yuyh131/article/details/85007086