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.pswp.cn/diannao/14074.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/14074.shtml
英文地址,請注明出處:http://en.pswp.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;繼而修改為…