基于深度学习的视觉检测小项目(十五) 用户的登录界面

news2025/1/24 1:51:16

        用户管理离不开的是消息框(QMessageBox)和对话框(QDialog),比如对话框用于用户名和密码输入,消息框用于提示登录成功、密码错误。

• 基础知识:PySide6(PyQT5)的常用对话框类-CSDN博客

• 组态前端画面:

        在designer中新建QDialog界面,命名为user_login.ui,按照本项目的命名规律,将界面的主部件命名为form_base,顶部边框命名为from_top,主显示区命名为form_main:

        在这个界面中新用到了列表框(QComboBox),单行文本编辑框(QLineEdit)。在项目的样式表文件style_uiproj.qss中添加这两个类的通用设置,并且在颜色设置文件color_setting.json和色卡文件color_card.json中增添新的设置项。

style_uiproj.qss中新增的内容:

/*下拉选项框默认色 */
QComboBox {
    background-color: 下拉框底色;
    color: 下拉文字色;
    通用凹边框;
}

/*文字输入框默认色*/
QLineEdit {
    background-color: 输入框底色;
    color: 输入文字色;
    通用凹边框;
}

color_setting.json中新增的内容:

"下拉框底色": "黑下拉框底色",
"下拉文字色": "黑下拉文字色",
"输入框底色": "黑输入框底色",
"输入文字色": "黑输入文字色"

color_card.json中新增的内容:

"黑输入框底色": "#a0a0f6",
"黑输入文字色": "#282828",
"黑下拉框底色": "#a6afb8",
"黑下拉文字色": "#5f5f5f",
"通用凹边框": "border-top: 3px solid #0d0d0d;border-left: 3px solid #0d0d0d;border-right: 2px solid #303030;border-bottom: 2px solid #303030"

经过以上设置,新建的对话框就继承了项目的整体显示风格。

        如果需要改变整体的显示风格或修改局部的颜色值,只需修改color_setting.json或color_card.json即可。

• 组态后端代码:

        将user_login.ui文件用uic工具转换为同名的user_login.py文件,并编写后端文件user_login_func.py。

user_login_func.py的内容:

# user_login(用户登录画面的后端功能函数)
from PySide6.QtCore import Slot
from PySide6.QtWidgets import QApplication, QDialog, QMessageBox
from UI_proj.functions.get_style_sheet import get_style_sheet   # 导入获取样式表的函数
from UI_proj.functions.form_center import center   # 导入窗口居中函数
from . import user_login  # 导入使用uis工具从start_up.ui生成而来的start_up.py文件
from DB_proj import db_set   # 导入数据库设置db_set.py

# 定义窗口类
class FormLogin(QDialog, user_login.Ui_form_base):
    def __init__(self):
        super().__init__()
        self.setupUi(self)   # 加载窗口
        self.run()   # 初始化运行窗口

    def run(self):   # 窗口的运行函数
        # 设置窗口样式
        def set_style_sheet():  # 设置窗口样式
            style_sheet = get_style_sheet('settings/color_card.json', 'settings/color_setting.json', 'settings/style_uiproj.qss')  # 获取项目级别的样式表
            style_sheet += get_style_sheet('settings/color_card.json', 'settings/color_setting.json', 'ui_forms/user_login/style_user_login.qss')  # 获取本画面的本地样式表并与项目级别样式表合并

            self.setStyleSheet(style_sheet)
        set_style_sheet()  # 设置窗口样式

        # 设置窗口居中
        center(self)  # 设置窗口居中

        # 设置所有用户名到下拉框
        def set_users():
            self.combo_users.clear()  # 清空下拉框
            users = db_set.get_users_name()   # 获取所有用户名
            for user in users:
                self.combo_users.addItem(user)  # 添加用户名到下拉框
        set_users()  # 设置所有用户名

        # 按钮“进入系统”点击事件连接的槽函数
        @Slot()
        def on_btn_login_clicked():
            user = self.combo_users.currentText()  # 获取当前用户名
            input_passwd = self.lineEdit_in_passwd.text()  # 获取当前输入密码
            current_passwd = db_set.get_user_info(user)["password"]  # 获取当前用户密码
            if input_passwd == current_passwd:  # 判断输入密码是否与当前用户密码一致
                QMessageBox.information(self, "登录成功", "登录成功")  # 弹出提示框
                self.close()  # 关闭窗口
            else:
                QMessageBox.warning(self, "登录错误", "用户名或密码错误")  # 弹出警告框

            self.lineEdit_in_passwd.setText("")  # 清空输入框
        self.btn_logoin.clicked.connect(on_btn_login_clicked)  # 按钮“进入系统”点击事件连接槽函数

        # 按钮“取消”点击事件连接的槽函数
        @Slot()
        def on_btn_cancel_clicked():  # 按钮“取消”点击事件连接的槽函数
            self.lineEdit_in_passwd.setText("")  # 清空输入框
            self.close()  # 关闭窗口
        self.btn_cancel.clicked.connect(on_btn_cancel_clicked)  # 按钮取消点击事件连接槽函数




        以上代码实现了用户登录的基本功能,目前的用户密码是明文存储的,如果需要加密可以使用现成的加密库,或者用字符移位等方法进行简单加密。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2281163.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在 Kubernetes 上快速安装 KubeSphere v4.1.2

目录标题 安装文档配置repo安装使用插件 安装文档 在 Kubernetes 上快速安装 KubeSphere 配置repo export https_proxy10.10.x.x:7890 helm repo add stable https://charts.helm.sh/stable helm repo update安装 helm upgrade --install -n kubesphere-system --create-name…

CPU 缓存基础知识

并发编程首先需要简单了解下现代CPU相关知识。通过一些简单的图,简单的代码,来认识CPU以及一些常见的问题。 目录 CPU存储与缓存的引入常见的三级缓存结构缓存一致性协议MESI协议缓存行 cache line 通过代码实例认识缓存行的重要性 CPU指令的乱序执行通过…

江天科技主要产品销售单价下滑,应收账款、存货周转率大幅下降

《港湾商业观察》廖紫雯 日前,苏州江天包装科技股份有限公司(以下简称:江天科技)冲击北交所,保荐机构为国投证券。 江天科技主要从事标签印刷产品的研发、生产与销售,公司主要产品包括薄膜类和纸张类的不…

Unity中在UI上画线

在UI中画一条曲线 我封装了一个组件,可以实现基本的画线需求. 效果 按住鼠标左键随手一画. 用起来也很简单,将组件挂到空物体上就行了,红色的背景是Panel. 你可以将该组件理解为一个Image,只不过形状更灵活一些罢了,所以它要放在下面的层级(不然可能会被挡住). 代码 可以…

Cloud Foundry,K8S,Mesos Marathon弹性扩缩容特性对比

一、Cloud Foundry 使用Scaling an Application Using App Autoscaler插件,基于资源使用情况触发简单扩缩容 CPU、内存、Http带宽、延时等 监控这些资源的使用情况决定扩缩容策略:实例是增加还是减少 Instance Limits 限制实例数量范围,定义…

Qt —— 控件属性

一、概述 控件有很多属性,我们学习和整理常见和常用的几个属性,由于所有的控件基本都是继承Widget类的,所以前面会先拿Widget类和常见的控件进行示范。 Qt Designer左侧一长条就是Qt给我们内置好的控件: 二、enabled 状态属性 …

vue+高德API搭建前端Echarts图表页面

利用vue搭建Echarts图表页面,在搭建Echarts图表中,如果搭建地理地形图需要准备一些额外的文件,地理json文件和js文件,js文件目前在网上只能找省一级的,json文件有对应的省市县,js文件和json文件对应的也是不…

Gartner发布2025年网络治理、风险与合规战略路线图

新型网络风险和合规义务,日益成为网络治理、风险与合规实践面临的问题。安全和风险管理领导者可以参考本文,实现从被动、专注于合规的方法到主动、进一步自动化方法的转型。 主要发现 不断变化的监管环境和不断扩大的攻击面,使企业机构难以实…

Redis 集群模式入门

Redis 集群模式入门 一、简介 Redis 有三种集群模式:主从模式、Sentinel 哨兵模式、cluster 分片模式 主从复制(Master-Slave Replication): 在这种模式下,数据可以从一个 Redis 实例(主节点 Master)复…

查看电脑或笔记本CPU的核心数方法及CPU详细信息

一、通过任务管理器查看 1.打开任务管理器 可以按下“Ctrl Shift Esc”组合键,或者按下“Ctrl Alt Delete”组合键后选择“任务管理器”来打开。 2.查看CPU信息 在任务管理器界面中,点击“性能”标签页,找到CPU使用记录区域&#xff0c…

光学遥感显著性目标检测2023-2024论文学习

GRSL 2023: Attention-Aware Three-Branch Network for Salient Object Detection in Remote Sensing Images 基于encoder-decoder框架,提出了一系列缝合模块,GCA,FDUC,MSDC,RA。 GRSL 2023:OR…

Kubernetes 集群中安装和配置 Kubernetes Dashboard

前言 上篇成功部署Kubernetes集群后,为了方便管理和监控集群资源,安装Kubernetes Dashboard显得尤为重要。Kubernetes Dashboard 是一个通用的、基于 Web 的 UI,旨在让用户轻松地部署容器化应用到 Kubernetes 集群,并对这些应用进…

2025西湖论剑-babytrace

前言 就做了下题目,pwn1/3 都是签到,pwn2 后面绕 ptrace 有点意思,简单记录一下 漏洞分析 子进程中的读/写功能没有检查负数的情况,存在越界读写: void __fastcall get_value(__int64 *int64_arr) {__int64 ll; //…

HarmonyOS Next 应用UI生成工具介绍

背景 HarmonyOS Next适配开发过程中难买难要参考之前逻辑,但是可能时间较长文档不全,只能参考Android或iOS代码,有些逻辑较重的场景还可以通过AI工具将Android 的Java代码逻辑转成TS完成部分复用。对于一些UI场景只能手动去写,虽…

计算机网络 (56)交互式音频/视频

一、定义与特点 定义:交互式音频/视频是指用户使用互联网和其他人进行实时交互式通信的技术,包括语音、视频图像等多媒体实时通信。 特点: 实时性:音频和视频数据是实时传输和播放的,用户之间可以进行即时的交流。交互…

【深度学习】Java DL4J 2024年度技术总结

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…

考研408笔记之数据结构(三)——串

数据结构(三)——串 1. 串的定义和基本操作 本节内容很少,重点是串的模式匹配,所以对于串的定义和基本操作,我就简单提一些易错点。另外,串也是一种特殊的线性表,只不过线性表是可以存储任何东…

Spring Data JPA使用基础教程

文章目录 Spring Data JPA使用基础教程一、引言二、环境搭建1、添加依赖2、配置数据库 三、核心组件1、实体类2、Repository 接口 四、使用示例1、基本操作1.1、保存数据1.2、查询数据1.3、更新数据1.4、删除数据 2、自定义查询 五、最佳实践1. **合理使用懒加载与急加载**2. *…

到华为考场考HCIE的注意事项和考试流程

大家好,我是张同学,来自成都职业技术学院2021级计算机网络专业。最近成功通过了 Datacom HCIE 考试,在这里和大家分享一下我的经验。 考证契机 在母校的培养下,我接触到ICT这个行业,打好了基础,开始了成…

STM32 ST7735 128*160

ST7735 接口和 STM32 SPI 引脚连接 ST7735 引脚功能描述STM32 引脚连接(示例,使用 SPI1)SCLSPI 时钟信号 (SCK)PA0(SPI1_SCK)SDASPI 数据信号 (MOSI)PA1 (SPI1_MOSI)RST复位信号 (Reset)PA2(GPIO 手动控制)DC数据/命令选择 (D/C)PA3 (GPIO 手…