建议基础弱的,或者看不太明白的读者可以先看看前边的思路,这样比较容易理解。地址:
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 __init__( self): super(FindWindow, self). __init__() self.setupUi( self) #每个新建类必写的