pyQt5实现页面切换操作

pyqt5实现多个页面切换

1.实验目的

最近探索了下各种页面跳转方式,现在介绍一种最直接的方式,就是qtdesigner中自带的分页组件,每个页面独立,比较适合多页面需求的朋友。因为毕竟核心在于目标检测网络的后端算法,所以前端web页面不需要特别精致,现在介绍一种比较实用的方式来进行页面切换。

2.ui界面

图1 第一个页面

图2 第二个页面

3.python脚本

python 复制代码
# -*- coding: utf-8 -*-
import sys

# Form implementation generated from reading ui file 'MainMenu.ui'
#
# Created by: PyQt5 UI code generator 5.15.9
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


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


class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(916, 650)
        self.label = QtWidgets.QLabel(Form)
        self.label.setGeometry(QtCore.QRect(0, 10, 741, 641))
        self.label.setText("")
        self.label.setPixmap(QtGui.QPixmap(":/img1/img1.jpg"))
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(Form)
        self.label_2.setGeometry(QtCore.QRect(120, 60, 671, 51))
        self.label_2.setStyleSheet("font:18pt \"Times New Roman\";")
        self.label_2.setObjectName("label_2")
        self.tabWidget = QtWidgets.QTabWidget(Form)
        self.tabWidget.setGeometry(QtCore.QRect(0, 100, 731, 531))
        self.tabWidget.setObjectName("tabWidget")
        self.tab = QtWidgets.QWidget()
        self.tab.setObjectName("tab")
        self.pushButton = QtWidgets.QPushButton(self.tab)
        self.pushButton.setGeometry(QtCore.QRect(220, 210, 75, 23))
        self.pushButton.setObjectName("pushButton")
        self.tabWidget.addTab(self.tab, "")
        self.tab_2 = QtWidgets.QWidget()
        self.tab_2.setObjectName("tab_2")
        self.pushButton_2 = QtWidgets.QPushButton(self.tab_2)
        self.pushButton_2.setGeometry(QtCore.QRect(250, 180, 75, 23))
        self.pushButton_2.setObjectName("pushButton_2")
        self.tabWidget.addTab(self.tab_2, "")

        self.retranslateUi(Form)
        self.tabWidget.setCurrentIndex(0)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        self.label_2.setText(_translate("Form", "欢迎来到长江大学电子信息与电气工程学院"))
        self.pushButton.setText(_translate("Form", "button1"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("Form", "图片检测界面"))
        self.pushButton_2.setText(_translate("Form", "button2"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("Form", "视频检测界面"))

    def fun1(self):
        box = QMessageBox()
        box.setText("欢迎来到第一个页面")
        box.show()
        box.exec_()

    def fun2(self):
        box = QMessageBox()
        box.setText("欢迎来到第二个页面")
        box.show()
        box.exec_()


import img1_rc
import logo_rc

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    Form = QtWidgets.QWidget()
    ui = Ui_Form()
    ui.setupUi(Form)
    ui.pushButton.clicked.connect(ui.fun1)
    ui.pushButton_2.clicked.connect(ui.fun2)
    Form.show()

    sys.exit(app.exec_())

4.实验结果展示

图3 实验结果展示

4.总结

页面切换/跳转,同等条件下,实际上页面切换似乎会更加便捷,因为他直接划分了作用域,不必考虑页面切换之间的变量变化。

相关推荐
Sapphire~13 分钟前
odoo-095 视图的重写规则(全部重写还是部分改写)
开发语言·javascript·ecmascript
利威尔xu14 分钟前
Go GMP 调度器 10 个高频追问:3 个线上故障让 P99 从 80ms 飙到 2s、10 万 goroutine 泄漏
开发语言·后端·面试·性能优化·golang
中电金信21 分钟前
从业务调优到分层缓存:DeepSeek V4 Flash的PPU实践
java·开发语言
梦影_23 分钟前
MySQL进阶教程(二)—— 储存过程与触发器(下)
开发语言·数据库·后端·sql·mysql·oracle·数据库开发
lg_cool_29 分钟前
Python 代码打包
开发语言·python
木雷坞32 分钟前
PHP两项9.2分漏洞:Docker容器更新与版本核验教程
开发语言·docker·php
2601_9628857240 分钟前
如何用 Python 做 MACD 金叉全市场选股?
开发语言·python
FfHUCisI42 分钟前
无锁 Reactor 网络模型与 gnet / evio 架构拆解
服务器·开发语言·后端·golang
笨笨饿43 分钟前
#145 _Codex 三层故障详细排查与修复步骤
开发语言·人工智能·stm32·单片机·嵌入式硬件
心中有你02141 小时前
C 语言文件操作详解:从写入、追加到读取与定位的完整 实战
c语言·开发语言