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

        用户管理离不开的是消息框(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)  # 按钮取消点击事件连接槽函数




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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

什么是COLLATE排序规则?

在当今数字化世界中,数据的整理、比较和排序是至关重要的。在数据库管理和编程语言中,我们经常需要对字符串进行排序,以展示或处理信息。为了实现这一点,各种系统和工具提供了排序规则,其中COLLATE排序规则就是其中的一…

Linux:信号的保存[2]

1.信号在内核中的表示 因为是三种内核的数据结构,操作系统就可以通过操作这些数据结构提供接口。 如果一个信号没有产生,并不妨碍它可以先被阻塞。 当同一时刻发送大量相同信号时,会丢失。 2.信号的捕捉(重点) 信号产…

顺序表和链表(详解)

线性表 线性表( linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串... 线性表在逻辑上是线性结构,也就说是连续的一条直线。…

【电脑无法通过鼠标和键盘唤醒应该怎么办】

【电脑无法通过鼠标和键盘唤醒应该怎么办】 方法一(有时候不起作用):方法二(方法一无效时,使用方法二): 方法一(有时候不起作用): 方法二(方法一无效时,使用方法二):

动态规划(路径问题)

62. 不同路径 62. 不同路径 - 力扣(LeetCode) 动态规划思想第一步:描述状态~ dp[i][j]:表示走到i,j位置时,一共有多少种方法~ 动态规划思想第二步:状态转移方程~ 动态规划思想第三步&#xf…

vue + element-ui 组件样式缺失导致没有效果

失效 代码: 修改方法: 在main.js文件里面加上: import element-ui/lib/theme-chalk/index.css; 最后:

Go 切片:用法和本质

要想更好的了解一个知识点,实战是最好的经历。 题目 我这里放一道题目: package mainimport "fmt"func SliceRise(s []int) {s append(s, 0)for i : range s {s[i]}fmt.Println(s) }func SlicePrint() {s1 : []int{1, 2}s2 : s1s2 append…

Spring MVC:设置响应

目录 引言 1. 返回静态页面 1.1 Spring 默认扫描路径 1.2 RestController 1.2.1 Controller > 返回页面 1.2.2 ResponseBody 2. 返回 HTML 2.1 RequestMapping 2.1.1 produces(修改响应的 Content-Type) 2.1.2 其他属性 3. 返回 JSON 4. 设置状态码 4.1 HttpSer…

基于Spark的共享单车数据存储系统的设计与实现_springboot+vue

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

在Unity中使用大模型进行离线语音识别

文章目录 1、Vosk下载下载vosk-untiy-asr下载模型在项目中使用语音转文字音频转文字2、whisper下载下载unity项目下载模型在unity中使用1、Vosk 下载 下载vosk-untiy-asr Github链接:https://github.com/alphacep/vosk-unity-asr 进不去Github的可以用网盘 夸克网盘链接:h…

【计算机网络】- 应用层HTTP协议

目录 初识HTTP 什么是HTTP 版本 HTTPS 模型 HTTP抓包工具 为什么使用 抓包工具的下载 下载后的重要操作 Fiddler的使用 HTTP请求与响应的基本格式 HTTP请求基本格式​编辑 HTTP响应基本格式 协议格式总结❗️❗️❗️​编辑 HTTP 详解 认识 URL URL基本格式 …

记一次IDOR 和访问控制缺失漏洞挖掘

视频教程在我主页简介和专栏里 测试 IDOR(不安全的直接对象引用) 漏洞时,我会使用一系列工具,确保不会遗漏任何问题。以下是我的测试方法: 设置 Firefox 和 Pwnfox: 1、我使用 Firefox 浏览器&#xff0c…

GS论文阅读--Hard Gaussian Splatting

前言 本文也是对高斯点云的分布进行优化的,看! 文章目录 前言1.背景介绍2.关键内容2.1 位置梯度驱动HGS2.2 渲染误差引导HGS 3.文章贡献 1.背景介绍 在训练过程中,它严重依赖于视图空间位置梯度的平均幅度来增长高斯以减少渲染损失。然而&…

JS基础-操作数组(7)

一.增删改查 1.改 重新赋值 2.增 arr.puch() 末尾追加 arr.unshift() 开头追加 a)案例:数组筛选 3.删除 arr.pop() 删除最后一个元素 arr.shift() 删除第一个元素 splice() 删除指定元素

C++otlv4连接sql serveer使用记录(注意点)

C使用otlv4在做插入时,有一些设计的坑需要注意 插入数据: 当要给表中插入单个字符时,数据库表设计使用varchar(1)是合理的,但是otlv4一直报错char。 后续查很久才知道,otlv4所写的绑定的字符数组的长度应该实际数组…

Chapter 6.5-Adding a classification head

Chapter 6 -Fine-tuning for classification 6.5-Adding a classification head 为进行分类微调,须修改预训练的大语言模型(LLM)。我们将原本把隐藏表征映射到含50,257个词的词表的输出层,替换为一个更小、仅映射到 “0&#xff…

洛谷题目 P1006 [NOIP2008 提高组] 传纸条 题解 (本题较难)

题目传送门: P1006 [NOIP2008 提高组] 传纸条 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 前言: 本题来源于2008年NOIp 提高组竞赛题目:传纸条,本题涉及到动态DP、图论里的费用流知识点,学过图论的都应该对这道题…

智能电动汽车 --- 人工智能(AI)入门

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活…

VUE之路由Props、replace、编程式路由导航、重定向

目录 1、路由_props的配置 2、路由_replaces属性 3、编程式路由导航 4、路由重定向 1、路由_props的配置 1)第一种写法,将路由收到的所有params参数作为props传给路由组件 只能适用于params参数 // 创建一个路由器,并暴露出去// 第一步…

VS C++ 配置OPENCV环境

VS C 配置OPENCV环境 1.下载opencv2.安装环境3.opencv环境4.VS配置opencv环境5.EXE执行文件路径的环境lib和dll需要根据是debug还是release环境来区分使用哪个 6.Windows环境 1.下载opencv 链接: link 2.安装环境 双击运行即可 3.opencv环境 include文件路径:opencv\build\…