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

news2024/11/13 9:38:15

项目效果展示

一、登录界面

二、主界面

目前在更新中。。。

一、设计

二、登录代码

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

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

数据库设计

model.py

from peewee import Model, PrimaryKeyField, CharField, TextField, BooleanField, IntegerField, DateTimeField, \
    MySQLDatabase

database = MySQLDatabase("qt_yolov5", host="localhost", port=3306,
                         user="root", password="123456")


class BaseModel(Model):
    class Meta:
        database = database


class 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 sys

from 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 UserModel


class 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,50
        head.move(280, 30)
        head.resize(450, 50)
        head.setStyleSheet("font-family:'隶书';font-size:44px;font-weight: bold;")
        user_label = QLabel('用户名', self)  # 180 140 70 30
        user_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 ,30
        pwd_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 30
        self.user.resize(210, 30)
        self.user.move(500, 140)
        self.user.setPlaceholderText("请输入至少5位的用户名")
        self.pwd = QLineEdit(parent=self)  # 260 200 210 30
        self.pwd.resize(210, 30)
        self.pwd.move(500, 220)
        self.pwd.setStyleSheet("background-color: #F6F6F6;")
        self.pwd.setPlaceholderText("请输入至少5位的密码")  # F6F6F6
        self.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 30
        login_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 30
        register_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 = msg
        self.setWindowTitle("login")
        self.s = s
        self.x, self.y, self.w, self.h = x, y, w, h  # 左上角坐标和长宽
        self.color = self.random_color() if not color else color
        self.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.coloradmin.cn/o/1686071.html

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

相关文章

新《体外诊断试剂分类目录》已发布,企业应该如何应对?

除了新版《体外诊断试剂分类目录》的变化外(见:体外诊断试剂分类目录的变与不变),最值得关心的是:- 2024版《体外诊断试剂分类目录》发布以后,过渡期多久?- 当前分类目录背景下如何管理?- 对在研、已取证、…

编程学习 (C规划) 6 {24_4_14} 六 ( 函数 )

1.函数的概念 C语言中函数就是一个子程序,C语言中的函数就是一个完成某项特定任务的一小段代码,有特殊的写法哥调用方法。 C语言中一般会见到两种函数 (1)库函数 (2)自定义函数 2.库函数 其实就是C语…

【MATLAB】基于VMD-SSA-LSTM的回归预测模型

有意向获取代码,请转文末观看代码获取方式~ 1 基本定义 基于VMD-SSA-LSTM的回归预测模型是一种结合了多种时间序列分析和机器学习技术的综合模型。下面我将分别介绍这三个组成部分的基本原理,并解释它们是如何结合起来进行回归预测的。 变分模态分解&a…

VMware Workstation 虚拟机安装 ubuntu 24.04 server 详细教程 服务器安装图形化界面

1 阿里云下载 ubuntu-releases安装包下载_开源镜像站-阿里云 2 打开vmware,新建虚拟机 3 选择下载的镜像,开始安装 3 光驱这里修改下 4 重新启动,安装图形化界面 #更新软件包列表 sudo apt-get update #安装Ubuntu图形桌面 sudo apt install ubuntu-desktop 5 安…

Helm安装kafka3.7.0无持久化(KRaft 模式集群)

文章目录 2.1 Chart包方式安装kafka集群 5.开始安装2.2 命令行方式安装kafka集群 搭建 Kafka-UI三、kafka集群测试3.1 方式一3.2 方式二 四、kafka集群扩容4.1 方式一4.2 方式二 五、kafka集群删除 参考文档 [Helm实践---安装kafka集群 - 知乎 (zhihu.com)](https://zhuanlan.…

《黑龙江日报》是什么级别的报刊?

《黑龙江日报》是什么级别的报刊? 《黑龙江日报》是省级党报。它是黑龙江省重要的主流媒体之一,在传达党的方针政策、反映社会动态、推动地方发展等方面发挥着重要作用。具有较高的权威性和影响力,为黑龙江省的新闻传播和信息交流做出了重要…

云动态摘要 2024-05-24

给您带来云厂商的最新动态,最新产品资讯和最新优惠更新。 最新优惠与活动 [免费试用]大模型知识引擎体验招募 腾讯云 2024-05-21 大模型知识引擎产品全新上线,为回馈新老客户,50万token免费送,开通服务即领取! 云服…

清空了电脑回收站,之前的文件还能否恢复?

电脑已成为我们日常生活中不可或缺的一部分。我们在电脑上处理文档、保存图片、下载视频等,而电脑中的回收站则成为我们处理不再需要文件的一个便捷工具,当我们想要删除某些文档的话,它并不是立即从硬盘上消失,而是被系统移动到了…

SwanLab入门深度学习:BERT IMDB文本情感分类

基于BERT模型的IMDB电影评论情感分类,是NLP经典的Hello World任务之一。 这篇文章我将带大家使用SwanLab、transformers、datasets三个开源工具,完成从数据集准备、代码编写、可视化训练的全过程。 观察了一下,中文互联网上似乎很少有能直接…

光敏聚酰亚胺(PSPI)行业技术壁垒较高 本土企业已具备相关产品量产能力

光敏聚酰亚胺(PSPI)行业技术壁垒较高 本土企业已具备相关产品量产能力 光敏聚酰亚胺(PSPI)又称光敏PI、光刻胶用聚酰亚胺,指将光敏基团引入聚酰亚胺分子链中制成的高性能有机材料。PSPI拥有极佳耐热性、化学稳定性、热…

新书推荐:6.1 if语句

计算机语言和人类语言类似,人类语言是为了解决人与人之间交流的问题,而计算机语言是为了解决程序员与计算机之间交流的问题。程序员编写的程序就是计算机的控制指令,控制计算机的运行。借助于编译工具,可以将各种不同的编程语言的…

Jenkins工具系列 —— 通过钉钉API 发送消息

文章目录 钉钉环境搭建使用钉钉API接口 发送消息机器人安全设置使用自定义关键词机器人安全设置使用加签方式 资料下载 钉钉环境搭建 在jenkins安装钉钉插件以及小机器人,这部分内容可参考:插件 钉钉发送消息 使用钉钉API接口 发送消息 机器人安全设置…

Day02:LeedCode977. 有序数组的平方 209.长度最小的子数组 59.螺旋矩阵II

详解:Day2:LeedCode977. 有序数组的平方 209.长度最小的子数组 59.螺旋矩阵II-CSDN博客 977. 有序数组的平方 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。 示例 1: 输入&#…

Docker Compose快速入门

本教程旨在通过指导您开发基本Python web应用程序来介绍Docker Compose的基本概念。 使用Flask框架,该应用程序在Redis中提供了一个命中计数器,提供了如何在web开发场景中应用Docker Compose的实际示例。 即使您不熟悉Python,这里演示的概念也…

Window Linux 权限提升

#基础点: 0、为什么我们要学习权限提升转移技术: 简单来说就是达到目的过程中需要用到它 心里要想着我是谁 我在哪 我要去哪里 1、具体有哪些权限需要我们了解掌握的: 后台权限,数据库权限,Web权限,用户权…

React 中Redux结合React-Redux使用类组件版本(一)

一、Redux是什么? 1.Redux是一个专门用于状态管理的js库 2.它可以用在React、Angular、Vue的项目中,但基本与React配合使用。 3.作用:集中式管理React应用中多个组件共享的状态。 二、Redux 工作流程 三、Redux的三个核心概念 1.action 动…

线上研讨会 | 探索非标自动化产线行业的数转智改之路

报名链接: 2024 达索系统工业大发展在线研讨会 (tbh5.com)

azure gpt 技术教程教学 | 在Azure OpenAI 上部署GPT-4o

Azure OpenAI GPT-4o是OpenAI推出的最新旗舰级人工智能模型。GPT-4o模型设计为能够实时对音频、视觉和文本进行推理,这是迈向更自然人机交互的重要一步。该模型的一大特点是能够处理多种类型的数据输入和输出,包括文本、音频和图像,实现了跨模…

521源码-在线客服-CRMChat网页版客服系统 UNIAPP 全方位在线客服系统源码与管理体系平台

CRMChat客服系统:基于Swoole4Tp6RedisVueMysql构建的高效沟通桥梁 CRMChat是一款独立且高性能的在线客服系统,它结合了Swoole4、Tp6、Redis、Vue以及Mysql等先进技术栈,为用户提供了卓越的在线沟通体验。该系统不仅支持在Pc端、移动端、小程…

软考 软件设计师 场景分析题 速成篇

文章目录 试题一:数据流图💖 基本图形元素1. 外部实体2. 数据存储3. 加工4. 数据流 📚 例题(1)实体名称(2)数据存储名称(3)数据流① 父子图平衡② 加工有输入有输出④ 数…