Pyside6实操笔记(一):系统页面跳转

2024-05-12 00:52

本文主要是介绍Pyside6实操笔记(一):系统页面跳转,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 背景
  • 代码实现

背景

假设我们有个登录界面和注册界面,如果我们想要从登录界面跳转到注册界面注册用户名和密码,可以采取本篇博客的方式来实现。

代码实现

关键代码

  • 1.创建一个空的窗口
class shareInfo:mainwin = None
    1. 跳转代码
#编写跳转注册界面逻辑
shareInfo.mainwin = RegistWindow()
shareInfo.mainwin.show()
#同时关闭登录界面
self.close()

完整代码


import sys, time
from PySide6.QtCore import Qt, QTranslator, QLocale
from PySide6.QtGui import QIcon, QPixmap
from PySide6.QtWidgets import QApplication
from qframelesswindow import FramelessWindow, StandardTitleBar, AcrylicWindow
from qfluentwidgets import setThemeColor, FluentTranslator, setTheme, Theme, SplitTitleBar
from my_ui.demo.login.Ui_LoginWindow import Ui_Form
from my_ui.demo.login.Ui_RegistWindow import Ui_Form as RUi_Form
from qfluentwidgets import InfoBar, InfoBarPosition
from main_entrence import main_sys_run, MainWindow
from utils.file_tools import get_user_info, write_user_info, get_passwordclass shareInfo:mainwin = Noneclass LoginWindow(AcrylicWindow, Ui_Form):def __init__(self):super().__init__()self.setupUi(self)# setTheme(Theme.DARK)self.xlsx_path = "files/user.xlsx"setThemeColor('#28afe9')self.setTitleBar(SplitTitleBar(self))self.titleBar.raise_()self.label.setScaledContents(False)self.setWindowTitle('自动标注系统登录界面')self.setWindowIcon(QIcon(":/images/logo.jpg"))self.resize(1000, 650)self.windowEffect.setMicaEffect(self.winId(), isDarkMode=False)self.titleBar.titleLabel.setStyleSheet("""QLabel{background: transparent;font: 13px 'Segoe UI';padding: 0 4px;color: white}""")desktop = QApplication.screens()[0].availableGeometry()w, h = desktop.width(), desktop.height()self.move(w//2 - self.width()//2, h//2 - self.height()//2)self.loginButton.clicked.connect(self.valid_user)self.findButton_.clicked.connect(self.regist_user)self.loginButton.setStyleSheet("QPushButton:hover { background-color: rgb(135,206,250); color: rgb(255,255,255)};")def regist_user(self):shareInfo.mainwin = RegistWindow()shareInfo.mainwin.show()self.close()def valid_user(self):df, USERS, PASSWORDS = get_user_info(self.xlsx_path)username = self.user_button.text()password = self.pw_button.text()if username in USERS:if str(password) == str(get_password(df, username)):InfoBar.success(title='恭喜登录成功',content="正在跳转系统界面!",orient=Qt.Horizontal,isClosable=True,position=InfoBarPosition.BOTTOM_RIGHT,duration=1000)shareInfo.mainwin = MainWindow()shareInfo.mainwin.show()self.close()else:InfoBar.error(title='用户名和密码验证失败!',content="",orient=Qt.Horizontal,isClosable=True,position=InfoBarPosition.BOTTOM_RIGHT,duration=-1)else:InfoBar.error(title='此用户未注册!',content="",orient=Qt.Horizontal,isClosable=True,position=InfoBarPosition.BOTTOM_RIGHT,duration=-1)def resizeEvent(self, e):super().resizeEvent(e)pixmap = QPixmap(":/images/background.jpg").scaled(self.label.size(), Qt.KeepAspectRatioByExpanding, Qt.SmoothTransformation)self.label.setPixmap(pixmap)class RegistWindow(AcrylicWindow, RUi_Form):def __init__(self):super().__init__()self.setupUi(self)# setTheme(Theme.DARK)self.xlsx_path = "files/user.xlsx"setThemeColor('#28afe9')self.setTitleBar(SplitTitleBar(self))self.titleBar.raise_()self.label.setScaledContents(False)self.setWindowTitle('自动标注系统注册界面')self.setWindowIcon(QIcon(":/images/logo.jpg"))self.resize(1000, 650)self.windowEffect.setMicaEffect(self.winId(), isDarkMode=False)self.titleBar.titleLabel.setStyleSheet("""QLabel{background: transparent;font: 13px 'Segoe UI';padding: 0 4px;color: white}""")desktop = QApplication.screens()[0].availableGeometry()w, h = desktop.width(), desktop.height()self.move(w//2 - self.width()//2, h//2 - self.height()//2)self.confirmButton.clicked.connect(self.valid_user)self.confirmButton.setStyleSheet("QPushButton:hover { background-color: rgb(135,206,250); color: rgb(255,255,255)};")def valid_user(self):USERS, PASSWORDS = get_user_info(self.xlsx_path)username = self.user_button.text()password = self.pw_button.text()c_password = self.pw1_button.text()print(username, password, c_password)#如果用户名为空,则显示报错信息if username == "":InfoBar.warning(title='提示',content="账号名不许为空!",orient=Qt.Horizontal,isClosable=True,position=InfoBarPosition.BOTTOM_RIGHT,duration=-1)else:#若用户名存在,报错if username in USERS:InfoBar.warning(title='提示',content="用户已经存在!",orient=Qt.Horizontal,isClosable=True,position=InfoBarPosition.BOTTOM_RIGHT,duration=-1)elif password != c_password:InfoBar.warning(title='提示',content="密码不一致,请重新输入!",orient=Qt.Horizontal,isClosable=True,position=InfoBarPosition.BOTTOM_RIGHT,duration=-1)else:write_user_info(self.xlsx_path, username, password)################################################shareInfo.mainwin = LoginWindow()shareInfo.mainwin.show()self.close()def resizeEvent(self, e):super().resizeEvent(e)# ":/images/background.jpg"pixmap = QPixmap(":/images/background.jpg").scaled(self.label.size(), Qt.KeepAspectRatioByExpanding, Qt.SmoothTransformation)self.label.setPixmap(pixmap)if __name__ == '__main__':app = QApplication(sys.argv)translator = FluentTranslator(QLocale())app.installTranslator(translator)w = LoginWindow()w.show()app.exec()

这篇关于Pyside6实操笔记(一):系统页面跳转的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/981142

相关文章

PyQt6/PySide6中QTableView类的实现

《PyQt6/PySide6中QTableView类的实现》本文主要介绍了PyQt6/PySide6中QTableView类的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学... 目录1. 基本概念2. 创建 QTableView 实例3. QTableView 的常用属性和方法

PyQt6/PySide6中QTreeView类的实现

《PyQt6/PySide6中QTreeView类的实现》QTreeView是PyQt6或PySide6库中用于显示分层数据的控件,本文主要介绍了PyQt6/PySide6中QTreeView类的实现... 目录1. 基本概念2. 创建 QTreeView 实例3. QTreeView 的常用属性和方法属性

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用

Linux系统之dns域名解析全过程

《Linux系统之dns域名解析全过程》:本文主要介绍Linux系统之dns域名解析全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、dns域名解析介绍1、DNS核心概念1.1 区域 zone1.2 记录 record二、DNS服务的配置1、正向解析的配置

Linux系统中配置静态IP地址的详细步骤

《Linux系统中配置静态IP地址的详细步骤》本文详细介绍了在Linux系统中配置静态IP地址的五个步骤,包括打开终端、编辑网络配置文件、配置IP地址、保存并重启网络服务,这对于系统管理员和新手都极具... 目录步骤一:打开终端步骤二:编辑网络配置文件步骤三:配置静态IP地址步骤四:保存并关闭文件步骤五:重

MySQL中实现多表查询的操作方法(配sql+实操图+案例巩固 通俗易懂版)

《MySQL中实现多表查询的操作方法(配sql+实操图+案例巩固通俗易懂版)》本文主要讲解了MySQL中的多表查询,包括子查询、笛卡尔积、自连接、多表查询的实现方法以及多列子查询等,通过实际例子和操... 目录复合查询1. 回顾查询基本操作group by 分组having1. 显示部门号为10的部门名,员

Windows系统下如何查找JDK的安装路径

《Windows系统下如何查找JDK的安装路径》:本文主要介绍Windows系统下如何查找JDK的安装路径,文中介绍了三种方法,分别是通过命令行检查、使用verbose选项查找jre目录、以及查看... 目录一、确认是否安装了JDK二、查找路径三、另外一种方式如果很久之前安装了JDK,或者在别人的电脑上,想