Pyqt5 实现多界面跳转代码

建议基础弱的,或者看不太明白的读者可以先看看前边的思路,这样比较容易理解。地址:

https://blog.csdn.net/weixin_40128423/article/details/80235246


界面代码:

      主界面代码:

            

    from PyQt5 import QtCore, QtGui, QtWidgets
    from PyQt5.QtCore import Qt


    class Ui_Form(object):
        def setupUi(self, Form):
            Form.setObjectName("Form")
            Form.resize(400, 286)
            self.setWindowFlags(Qt.FramelessWindowHint)#设置窗体无边框  

        子界面代码:

        

    from PyQt5 import QtCore, QtGui, QtWidgets
    from PyQt5.QtCore import Qt


    class Ui_Dialog2(object):
        def setupUi(self, Form):
            Form.setObjectName("Form")
            Form.resize(400, 286)
            self.setWindowFlags(Qt.FramelessWindowHint)#设置窗体无边框
            self.pushButton = QtWidgets.QPushButton(Form)
            self.pushButton.setGeometry(QtCore.QRect(320, 0, 75, 23))
上边两部分都只是界面代码的一部分,目的是说明之前说的主见面与子见面之间的
Ui_Form与Ui_Dialog的关系。
主界面主函数代码(功能代码(我自己理解的)):其中还有几个界面与find界面有跳转关系,可以模仿set,find,map界面与                                                               主界面之间的方法去写的试试。

import os
from PyQt5.QtCore import pyqtSignal   #这两句都是后边要用到的,第一句是主界面退出时
                                      需要用到的一个包,第二个是返回信号所需要的一包。
from py.mwindow import Ui_Form
from py.map import Ui_Dialog2
from py.set import Ui_Dialog
from py.find import Ui_Dialog3
from py.locat import Ui_Dialog4
from py.times import Ui_Dialog5
from py.tiredtimes import Ui_Dialog6   #上边这一堆是参与跳转的界面倒进来
from PyQt5 import QtCore,QtWidgets,QtGui

class LoginWindow(QtWidgets.QMainWindow,Ui_Form):#主界面新建的类
    def __init__(self):
        super(LoginWindow, self).__init__()  
        self.setupUi(self)
 
 
                    #上边两行每一个类定义好后都要写。
self.mapwindow = MapWindow()#定义一个新变量,把地图界面这个类传过来 self.setwindow = SetWindow() #定义一个新变量,把设置界面这个类传过来
self.findwindow = FindWindow() #定义一个新变量,把查找界面这个类传过来
self.pushButton_4.clicked.connect( self.iclose)#主界面退出按钮的点击事件,电泳 self.pushButton_3.clicked.connect( self.showMap) #主界面跳转地图界面的点击事件,调用showmap函数
self.mapwindow.backsignal.connect( self.showmain)#接收地图界面发送的返回信号,并调用showmain函数 self.pushButton.clicked.connect( self.showSet) #主界面跳转设置界面的点击事件,调用showset函数
      self.setwindow.backsignal1.connect(self.showmain)#接收设置界面发送的返回信号,并调用showmain函数
      self.pushButton_2.clicked.connect(self.showFind)#主界面跳转查找界面的点击事件,调用showfind函数
self.findwindow.backsignal2.connect( self.showmain) #接收查找界面发送的返回信号,并调用showmain函数
def showmain( self): self.setVisible( 1)#显示主界面 def showMap( self): self.setVisible( 0)#隐藏主界面 self.mapwindow.setVisible( 1)#显示地图界面 def showSet( self): self.setVisible( 0) #隐藏主界面
self.setwindow.setVisible( 1) #显示设置界面
def showFind( self): self.setVisible( 0) #隐藏主界面
self.findwindow.setVisible( 1) #显示查找界面
def iclose( self): os._exit( 0) #退出主界面(直接结束进程) class MapWindow(QtWidgets.QMainWindow,Ui_Dialog2):#地图界面新建的类 backsignal = pyqtSignal() #定义返回之前界面的信号 def __init__( self): super(MapWindow, self). __init__() self.setupUi( self) #每个新建类必写的 self.pushButton.clicked.connect( self.backmain)#返回主界面的点击事件,调用backmain函数 def backmain( self): self.backsignal.emit()#发送返回信号 self.setVisible( 0)#关闭地图界面 class SetWindow(QtWidgets.QMainWindow,Ui_Dialog):#设置界面新建的类 backsignal1 = pyqtSignal() #定义返回之前界面的信号
def __init__( self): super(SetWindow, self). __init__() self.setupUi( self) #每个新建类必写的
self.pushButton_2.clicked.connect( self.backmain) #返回主界面的点击事件,调用backmain函数

def backmain( self): self.backsignal1.emit()#发送返回信号 self.setVisible( 0) class FindWindow(QtWidgets.QMainWindow,Ui_Dialog3):查找界面新建的类 backsignal2 = pyqtSignal() #定义返回之前界面的信号
def __init__( self): super(FindWindow, self). __init__() self.setupUi( self) #每个新建类必写的

self.locatwindow = LocatWindow() self.timeswindow = TimesWindow() self.tiredtimeswindow = TiredtimesWindow() self.pushButton_5.clicked.connect( self.backmain)# 返回主界面的点击事件,调用backmain函数 self.pushButton_2.clicked.connect( self.showlocat) self.locatwindow.backsignal3.connect( self.showfind) self.pushButton_3.clicked.connect( self.showtimes) self.timeswindow.backsignal4.connect( self.showfind) self.pushButton_4.clicked.connect( self.showtiredtimes) self.tiredtimeswindow.backsignal5.connect( self.showfind) def showfind( self): self.setVisible( 1) def showlocat( self): self.setVisible( 0) self.locatwindow.setVisible( 1) def backmain( self): self.backsignal2.emit()#发送返回信号 self.setVisible( 0)#关闭查找界面 def showtimes( self): self.setVisible( 0) self.timeswindow.setVisible( 1) def showtiredtimes( self): self.setVisible( 0) self.tiredtimeswindow.setVisible( 1) class LocatWindow(QtWidgets.QMainWindow,Ui_Dialog4):#新建的类 backsignal3 = pyqtSignal() def __init__( self): super(LocatWindow, self). __init__() self.setupUi( self) self.pushButton_2.clicked.connect( self.backfind) def backfind( self): self.backsignal3.emit() self.setVisible( 0) class TimesWindow(QtWidgets.QMainWindow,Ui_Dialog5):新建的类 backsignal4 = pyqtSignal() def __init__( self): super(TimesWindow, self). __init__() self.setupUi( self) self.pushButton.clicked.connect( self.backfind) def backfind( self): self.backsignal4.emit() self.setVisible( 0) class TiredtimesWindow(QtWidgets.QMainWindow,Ui_Dialog6):新建的类 backsignal5 = pyqtSignal() def __init__( self): super(TiredtimesWindow, self). __init__() self.setupUi( self) self.pushButton.clicked.connect( self.backfind) def backfind( self): self.backsignal5.emit() self.setVisible( 0) if __name__== "__main__": import sys app = QtWidgets.QApplication(sys.argv) loginwindow = LoginWindow() loginwindow.show() sys.exit(app.exec())

猜你喜欢

转载自blog.csdn.net/weixin_40128423/article/details/80236600