pyqt5与yolov5进行视频检测(一)——登录操作

项目效果展示

一、登录界面

二、主界面

目前在更新中。。。

一、设计

二、登录代码

注意:下面会导入主界面的包,图片资源自己设计一下,密码保存时没设计加密,需要自行设计

main_window主界面下文会设计
from main_window import MWindow

数据库设计

model.py

from peewee import Model, PrimaryKeyField, CharField, TextField, BooleanField, IntegerField, DateTimeField, \MySQLDatabasedatabase = MySQLDatabase("qt_yolov5", host="localhost", port=3306,user="root", password="123456")class BaseModel(Model):class Meta:database = databaseclass CheckRecordModel(BaseModel):id = PrimaryKeyField()label = CharField(max_length=32, help_text='标签')time = IntegerField(default=32, help_text='时间')save_path = CharField(max_length=128, help_text='图片路径')enabled = BooleanField(default=False, help_text='启用')class UserModel(BaseModel):id = PrimaryKeyField()user_name = CharField(max_length=32, help_text='用户')password = CharField(max_length=32, help_text='密码')enabled = BooleanField(default=True, help_text='启用')if __name__ == '__main__':database.connect()database.create_tables([CheckRecordModel])database.create_tables([UserModel])# tp = UserModel(user_name='aa', password='123456')# tp.save()s = UserModel.select().where(UserModel.user_name == 'bb')if s:print(s[0].user_name)print(list(s))database.close()
import random
import sysfrom PyQt5.QtWidgets import QApplication, QWidget, QDialog, QLineEdit, QLabel, QPushButton, QMainWindow
from PyQt5.QtCore import QTimer, QSize
from PyQt5.QtGui import QFont, QPalette, QBrush, QPixmap, QIcon
from main_window import MWindow
from model import UserModelclass LoginWindow(QMainWindow):def __init__(self):super().__init__()self.init_ui()def init_ui(self):self.resize(800, 500)self.setWindowTitle('login')head = QLabel('人工智能视觉检测系统', self)  # 140,50 410,50head.move(280, 30)head.resize(450, 50)head.setStyleSheet("font-family:'隶书';font-size:44px;font-weight: bold;")user_label = QLabel('用户名', self)  # 180 140 70 30user_label.resize(70, 30)user_label.move(420, 140)user_label.setStyleSheet("font-family:'楷体';font-size:22px;font-weight: bold;")pwd_label = QLabel('密码', self)  # 180 200 70 ,30pwd_label.resize(70, 30)pwd_label.move(420, 220)pwd_label.setStyleSheet("font-family:'楷体';font-size:22px;font-weight: bold;")self.user = QLineEdit(parent=self)  # 260 140 210 30self.user.resize(210, 30)self.user.move(500, 140)self.user.setPlaceholderText("请输入至少5位的用户名")self.pwd = QLineEdit(parent=self)  # 260 200 210 30self.pwd.resize(210, 30)self.pwd.move(500, 220)self.pwd.setStyleSheet("background-color: #F6F6F6;")self.pwd.setPlaceholderText("请输入至少5位的密码")  # F6F6F6self.pwd.setEchoMode(QLineEdit.Password)self.visible_btn = QPushButton(parent=self)  ##############self.visible_btn.move(680, 220)self.visible_btn.resize(30, 30)self.visible_btn.setIcon(QIcon('src/pwd_vi.jpg'))  # 设置按钮的图片self.visible_btn.setIconSize(QSize(25, 25))  # 设置图片的尺寸self.visible_btn.setStyleSheet("border: 1px solid transparent;")  ###############login_btn = QPushButton('登录', self)  # 200 280 90 30login_btn.resize(90, 30)login_btn.move(420, 310)login_btn.setStyleSheet("font-family:'宋体';font-size:18px;text-align:center;")register_btn = QPushButton('注册', self)  # 370 280 90 30register_btn.resize(90, 30)register_btn.move(620, 310)register_btn.setStyleSheet("font-family:'宋体';font-size:18px;text-align:center;")palette = QPalette()palette.setBrush(QPalette.Background, QBrush(QPixmap("src/login.png")))self.setPalette(palette)login_btn.clicked.connect(self.login_btn_clicked)register_btn.clicked.connect(self.register_btn_clicked)self.visible_btn.clicked.connect(self.password_visibility)def login_btn_clicked(self):user_name = self.user.text()user_pwd = self.pwd.text()if not user_name or not user_pwd:Dialog("请输入完整信息!", 1, w=300).start()else:s = UserModel.select().where(UserModel.user_name == user_name)if s:if s[0].user_name == user_name and s[0].password == user_pwd:Dialog("登录成功!", 2).start()self.open_main_window()else:Dialog("密码不正确!", 1).start()else:Dialog("该用户不存在!", 1, w=280).start()def register_btn_clicked(self):user_name = self.user.text()user_pwd = self.pwd.text()s = UserModel.select().where(UserModel.user_name == user_name)if s:Dialog("用户名已存在!", 1, w=280).start()else:if len(user_pwd) >= 5 and len(user_name) >= 5:tp = UserModel(user_name=user_name, password=user_pwd)tp.save()Dialog("注册成功!", 1, w=280).start()self.open_main_window()else:Dialog("请重新注册!", 1, w=280).start()def password_visibility(self):if self.pwd.echoMode() == QLineEdit.Password:self.pwd.setEchoMode(QLineEdit.Normal)self.visible_btn.setIcon(QIcon('src/pwd_in.jpg'))  # 设置按钮的图片self.visible_btn.setIconSize(QSize(25, 25))  # 设置图片的尺寸else:self.pwd.setEchoMode(QLineEdit.Password)self.visible_btn.setIcon(QIcon('src/pwd_vi.jpg'))  # 设置按钮的图片self.visible_btn.setIconSize(QSize(25, 25))  # 设置图片的尺寸def open_main_window(self):self.close()main_window = MWindow()main_window.show()class Dialog(QDialog):def __init__(self, msg, s: int = 2, x=240, y=120, w=250, h=50, color=None):super().__init__()self.msg = msgself.setWindowTitle("login")self.s = sself.x, self.y, self.w, self.h = x, y, w, h  # 左上角坐标和长宽self.color = self.random_color() if not color else colorself.resize(self.w, self.h)def random_color(self):return "#{:06x}".format(random.randint(0, 0xFFFFFF))def add_text(self):label = QLabel(self.msg, self)label.setStyleSheet("text-align:center;")def edit_style(self):style = (f"border: 1px solid transparent;"f"font-family:'Times New Roman';"f"font-size:40px;color:{self.color};"f"font-weight: bold;")self.setStyleSheet(style)def start(self):self.edit_style()self.add_text()self.timer = QTimer(self)  # 设置定时器,s秒后关闭弹窗self.timer.timeout.connect(self.close)self.timer.start(self.s * 1000)self.exec_()if __name__ == '__main__':app = QApplication(sys.argv)w = LoginWindow()w.show()app.exec_()

三、登录效果

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

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

相关文章

无线通信的穿墙能力主要取决于哪些指标

无线通信的穿墙能力是指无线信号在穿越建筑物墙壁时,其信号衰减程度以及能否维持足够强度以进行稳定通信的能力。穿墙能力的好坏直接影响到无线通信在室内环境中的覆盖范围和使用体验。 一、无线信号的频率 无线信号的频率是影响穿墙能力的重要因素之一。一般来说…

工行音视频服务平台建设与应用经验

近些年来,伴随着技术能力的积累突破,音视频服务开始蓬勃生长走进千家万户,使用远程视频通话、观看各类视频直播逐渐成为人们的日常,而金融服务作为社会生活的重要组成部分,自然需要积极拥抱应用新技术。 如今&#xff…

怎么知道Python包的依赖项

要查看Python包的依赖项,有几种方法可以做到这一点: 使用pip: pip是Python的包管理器,它允许你安装和管理Python库。要查看一个包的依赖关系,你可以使用pip show命令加上包名,但请注意,直接用pip show并不直接列出依赖项,它提供包的详细信息,包括它的安装路径。为了查看…

Kubernetes Deployment 之扩缩容与滚动更新

Kubernetes Deployment 之扩缩容与滚动更新 Deployment 扩缩容 扩缩容非常简单,我们可以直接调整 replica 副本数目,然后 kubectl apply指定进行动态更新。下面将nginx-deployment动态改为 1 个 Pod 和 3 个 Pod 的操作 apiVersion: apps/v1 kind: De…

20232820 2023-2024-2 《网络攻防实践》实践十一报告

20232820 2023-2024-2 《网络攻防实践》实践十一报告 1.实践内容 web浏览器渗透攻击 任务:使用攻击机和Windows靶机进行浏览器渗透攻击实验,体验网页木马构造及实施浏览器攻击的实际过程 取证分析实践—网页木马攻击场景分析 攻防对抗实践—web浏览…

非关系型数据库NOSQL

文章目录 1. NOSQL 概述2. 相关理论基础2.1 一致性2.2 分区2.3 存储分布2.4 查询模型 3. NOSQL 数据库的种类3.1 文档存储3.2 键值存储3.3 列存储3.3 图存储 4. NOSQL 应用案例和新技术4.1 HBase 数据库4.2 云数据库 GeminiDB 非关系型的数据库 NOSQL (Not Only SQL)是对不同于…

linux-x86_64-musl 里面的musl是什么意思?

在一些开源库里面可以看到,linux-x86_64-musl类似于这样的字符串,这个musl是什么意思呢? 在字符串 "linux-x86_64-musl" 中,musl 指的是 musl libc,这是一个轻量级的 C 标准库实现。 让我们来拆解一下这个字…

Linux系统(ubuntu)挂载jffs2文件系统

一. 挂载操作 1、加载mtdram模块: sudo modprobe mtdram total_size16384//total_size后面跟的参数单位是KB,并且其大小要大于jffs2镜像文件的大小 2、sudo modprobe mtd 3、sudo modprobe mtdblock 4、sudo modprobe jffs2 5、拷贝jffs2镜像文件到/dev…

Unity性能优化工具介绍

文章目录 一.Stats组件1.Audio音频的数据组件:2.图形数据 二.Profiler 性能分析器 一.Stats组件 Unity自带Statistics(统计数据),Game视窗中点击Stats打开 1.Audio音频的数据组件: 1):Level 声音强度 单位是分贝(dB) 表示音频听声音的大小,是闪烁波动的. 2):SDPload 数据信…

阅读笔记——《AFLNeTrans:状态间关系感知的网络协议模糊测试》

【参考文献】洪玄泉,贾鹏,刘嘉勇.AFLNeTrans:状态间关系感知的网络协议模糊测试[J].信息网络安全,2024,24(01):121-132.【注】本文仅为作者个人学习笔记,如有冒犯,请联系作者删除。 目录 摘要 1、引言 2、背景及动机 2.1、网络协议实现程…

每日AIGC最新进展(9):定制化多主题文本到视频的生成、3D动漫角色生成、具有多种几何形状和纹理细节的3D高斯引导服装合成

Diffusion Models专栏文章汇总:入门与实战 DisenStudio: Customized Multi-subject Text-to-Video Generation with Disentangled Spatial Control 本文提出了一个名为DisenStudio的框架,用于定制化多主题文本到视频的生成。该框架旨在解决现有文本到视频生成模型在处理多主题…

UE5文件操作

首先在虚幻引擎中创建UMyBlueprintFunctionLibrary类,可以在该类中写我们重复利用的功能,并且这些功能不依赖于特定的游戏对象,方便全局调用。 1.文件的读取和写入 UFUNCTION(BlueprintCallable, Category "File")static bool lo…

C++小病毒

C小病毒&#xff08;注&#xff1a;对电脑无过大伤害&#xff09; 短短行&#xff0c;创造奇迹&#xff01; 把这个文件命名为virus.exe就可以使用了。 #include<bits/stdc.h> #include<windows.h> using namespace std; int main() {HWND hwnd GetForegroundW…

Unity射击游戏开发教程:(24)创造不同的敌人

在这篇文章中,我们将讨论添加一个可以承受多次攻击的新敌人和一些动画来使事情变得栩栩如生。敌人没有任何移动或射击行为。这将有助于增强未来敌人的力量。 我们将声明一个 int 来存储敌人可以承受的攻击数量,并将其设置为 3。

PDF24 Creator v11.12.1软件安装教程(附软件下载地址)

软件简介&#xff1a; 软件【下载地址】获取方式见文末。注&#xff1a;推荐使用&#xff0c;更贴合此安装方法&#xff01; PDF24 Creator v11.12.1是一款免费、简便实用的多功能 PDF 工具。用户可通过直观拖放界面轻松组合、编辑和处理PDF文件。功能包括合并、分割、添加、…

C# 观察者模式实现

代码&#xff1a; using System; using System.Collections.Generic;public delegate void NotificationObserverCallback(object obj);public class NotificationObserver {public NotificationObserverCallback Selector null;public string KeyName ""; }public…

Java开发工具类(JDK、Hutool、Guava)

目录 Java开发常用的工具类1、JDK自带程序读取控制台输入内容&#xff08;调试程序或者学习的时候比较有用&#xff09;Arrays工具类 数组转集合Collections 集合工具类 排序Collections 集合工具类 查找Lambda表达式 操作集合 收集、转map、分组 2、Apache 的 commons-lang3 和…

一文解读:OA中会议管理功能,帮助设计师看清楚门道

会议管理是OA系统中的重要功能之一&#xff0c;它涉及到会议的组织、安排、记录和跟进等方面。本文将从以下四个方面介绍会议管理在OA系统中的功能、流程、设计注意事项和所涉界面。 一、OA中会议管理的功能 OA中常用的会议功能如下&#xff1a; 会议预约&#xff1a;OA系统提…

RedisTemplate操作Redis, 看这一篇文章就够了

文章目录 1. String 命令1.1 添加缓存1.2 设置过期时间(单独设置)1.3 获取缓存值1.4 删除key1.5 顺序递增1.6 顺序递减1.7 常用的 2. Hash命令2.1 添加缓存2.2 设置过期时间(单独设置)2.3 添加一个Map集合2.4 提取所有的小key2.5 提取所有的value值2.6 根据key提取value值2.7 获…

x的平方根-力扣

本题想到使用二分法不断逼近一个区间&#xff0c;直到最后趋近于x&#xff0c;从而求得解。注意的点&#xff0c;一开始使用 if(mid * mid < x) 进行判断时&#xff0c;会出现越界&#xff0c;原因是输入一个很大的数是&#xff0c;超过int表示的范围&#xff0c;继而修改为…