Pyqt5页面间相互跳转

这篇博客介绍了如何使用PyQT5创建GUI界面并结合YOLV5实现图像识别功能。作者通过创建一个控制器类实现页面间的跳转,包括从主界面跳转到图片识别界面,以及从图片识别界面返回主界面。此外,还展示了如何通过信号和槽机制在不同窗口之间进行通信,以实现实时的界面切换。这种方法适用于构建多窗口应用,尤其适合需要在多个界面之间导航的场景。
摘要由CSDN通过智能技术生成

        最近在为yolov5识别制作界面,因为用qt做的界面目前我还无法调用yolov5,因此采用pyqt5来是做界面,方便调用。本方法引入了第三个py文件来实现页面间跳转。

 首先将要进行跳转的界面都导入到创建的第三个文件中(run.py)

from main import Ui_MainWindow as Main_ui
from pic import Ui_dialog as Pic_ui 

其次

# 主窗口
class MainWindow(QtWidgets.QMainWindow, Main_ui):
    switch_window1 = QtCore.pyqtSignal() # 跳转信号
    def __init__(self):
        super(MainWindow, self).__init__()
        self.setupUi(self)
        self.btn_pic.clicked.connect(self.goPic)
    def goPic(self):
        self.switch_window1.emit()

# 图片识别窗口
class PicWindow(QtWidgets.QDialog, Pic_ui):
    switch_window5 = QtCore.pyqtSignal()  # 跳转信号
    def __init__(self):
        super(PicWindow, self).__init__()
        self.setupUi(self)
        self.btn_main.clicked.connect(self.goPic_main)
    def goPic_main(self):
        self.switch_window5.emit()

 再创建一个控制器实现页面跳转

# 利用一个控制器来控制页面的跳转
class Controller1:
    def __init__(self):
        self.pic = PicWindow()
        self.main = MainWindow()
        self.vidio = VidioWindow()
        self.pic.hide()
        self.main.hide()
        self.vidio.hide()

    # 跳转到 main 窗口
    def show_main(self):
        self.main.switch_window1.connect(self.show_pic)
        self.main.show()
    # 跳转到 pic窗口
    def show_pic(self):
        self.main.close()
        self.pic.show()

此处想利用这一个控制器实现两个页面来回跳转,但是因为自身水平有限,此处需要再定义一个控制器实现子界面返回主界面 

# 控制器2,实现子界面返回主界面
class Controller2:
    def __init__(self, pic1):
        self.pic = pic1.pic
        self.main = pic1.main
    #pic窗口返回main窗口
    def show_pic_main(self):
        self.pic.switch_window5.connect(self.show_main_)
        self.pic.hide()
    # 显示main窗口
    def show_main_(self):
        self.pic.close()
        self.main.show()

再定义一个main函数

def main():
    app = QtWidgets.QApplication(sys.argv)
    controller1 = Controller1() # 控制器实例
    controller2 = Controller2(controller1)
    controller1.show_main() # 默认展示的是 hello 页面
    controller2.show_pic_main()
    sys.exit(app.exec_())

 最后运行main函数就OK

成果展示:

主界面

跳转到: 

子界面1

并且点击返回主界面按钮就可以返回到主界面,此处就不做演示。 

通过此方法还可实现多界面的来回跳转,此处只显示跳转到第三个界面,并且可以返回。

界面3

结束!        

  • 9
    点赞
  • 87
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lc_MVP

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值