当前位置: 首页 > news >正文

基于深度学习的视觉检测小项目(十七) 用户管理后台的编程

完成了用户管理功能的阶段。下一阶段进入AI功能相关。所有的资源见文章链接。

补充完后台代码的用户管理界面代码:

import sqlite3from PySide6.QtCore import Slot
from PySide6.QtWidgets import QDialog, QMessageBoxfrom . import user_manage   # 导入使用uis工具从user_manage.ui生成而来的user_managep.py文件
from UI_proj.ui_project import uiproj     # 导入全局的ui项目对象
from DB_proj import db_set   # 导入数据库设置db_set.py
from UI_proj.functions.get_style_sheet import get_style_sheet  # 导入获取样式表的函数
from UI_proj.functions.form_center import center   # 导入窗口居中函数# 定义窗口类
class UserManage(QDialog, user_manage.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_manage/style_user_manage.qss')  # 获取本画面的本地样式表并与项目级别样式表合并self.setStyleSheet(style_sheet)  # 设置窗口样式# print(style_sheet)  # 打印样式表set_style_sheet()  # 设置窗口样式# 设置窗口居中center(self)  # 设置窗口居中# 设置表格的初始化查询数据def set_table_data():self.tableView.model.query.emit("SELECT id, 用户, 密码, 用户组 FROM users")  # 设置表格的查询数据set_table_data()  # 设置表格的初始化查询数据@Slot()# 点击退出按钮退出程序def on_btn_exit_clicked():self.close()  # 关闭窗口self.btn_exit.clicked.connect(on_btn_exit_clicked)  # 点击退出按钮退出程序@Slot()  # 点击“添加”按钮显示添加用户窗口def on_btn_add_clicked():  # 点击“添加”按钮显示添加用户窗口uiproj.form_user_edit.label_top.setText("添加用户")uiproj.form_user_edit.exec()  # 显示添加用户窗口uiproj.form_user_edit.user_details.emit(["","","", ""])  # 发送用户详情信号到用户编辑窗口self.btn_add.clicked.connect(on_btn_add_clicked)  # 点击“添加”按钮显示添加用户窗口@Slot()  # 点击“删除”按钮显示删除用户窗口def on_btn_delete_clicked():  # 点击“删除”按钮显示删除用户窗口indices = self.tableView.selectedIndexes()  # 获取选定的表格索引if indices:if QMessageBox.question(self, "提示", "确定要删除吗?", QMessageBox.Yes | QMessageBox.No, QMessageBox.No) == QMessageBox.Yes:user_row = self.tableView.model.record(indices[0].row())  # 选定的内容的第一行user_id = user_row.value("id")  # 获取用户iddb_set.delete_user(user_id)   # 删除用户信息QMessageBox.information(self, "提示", "用户已删除!")  # 弹出提示对话框uiproj.form_user_manage.tableView.model.query.emit("SELECT id, 用户, 密码, 用户组 FROM users")  # 设置表格的查询数据,刷新显示self.btn_delete.clicked.connect(on_btn_delete_clicked)  # 点击“删除”按钮显示删除用户窗口@Slot()  # 点击“编辑”按钮显示编辑用户窗口def on_btn_edit_clicked():  # 点击“编辑”按钮显示编辑用户窗口indices = self.tableView.selectedIndexes()   # 获取选定的表格索引if indices:user_row = self.tableView.model.record(indices[0].row())  # 选定的内容的第一行user = [user_row.value("id"),user_row.value("用户"),user_row.value("密码"),user_row.value("用户组")]  # 构建用户元组uiproj.form_user_edit.user_details.emit(user)    # 发送用户详情信号到用户编辑窗口uiproj.form_user_edit.label_top.setText("编辑用户")uiproj.form_user_edit.exec()  # 显示编辑用户窗口self.btn_edit.clicked.connect(on_btn_edit_clicked)  # 点击“编辑”按钮显示编辑用户窗口

补充完后台代码的用户编辑界面代码:

import sqlite3from PySide6.QtCore import Slot, Signal, QObject
from PySide6.QtWidgets import QDialog, QMessageBoxfrom . import user_edit   # 导入使用uis工具从user_edit.ui生成而来的user_edit.py文件
from UI_proj.ui_project import uiproj     # 导入全局的ui项目对象
from DB_proj import db_set   # 导入数据库设置db_set.py
from UI_proj.functions.get_style_sheet import get_style_sheet  # 导入获取样式表的函数
from UI_proj.functions.form_center import center   # 导入窗口居中函数# 定义窗口类
class UserEdit(QDialog, user_edit.Ui_form_base):user_details = Signal(list)    # 定义信号,用于传递用户信息详情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_edit/style_user_edit.qss')  # 获取本画面的本地样式表并与项目级别样式表合并self.setStyleSheet(style_sheet)  # 设置窗口样式# print(style_sheet)  # 打印样式表set_style_sheet()  # 设置窗口样式# 设置窗口居中center(self)  # 设置窗口居中@Slot()# 点击退出按钮退出程序def on_btn_exit_clicked():uiproj.form_user_edit.user_details.emit(["", "", "", ""])  # 发送用户详情信号到用户编辑窗口self.close()  # 关闭窗口self.btn_exit.clicked.connect(on_btn_exit_clicked)  # 点击退出按钮退出程序@Slot()# 点击“提交保存”按钮保存用户信息def on_btn_submit_clicked():# 获取用户信息user_id = self.lineEdit_ID.text()user_name = self.lineEdit_name.text()user_passwd = self.lineEdit_passwd.text()user_group = self.combo_group.currentText()# 判断用户信息是否为空if user_name == "" or user_passwd == "" or user_group == "":QMessageBox.warning(self, "警告", "用户信息不能为空!")  # 弹出警告对话框returnelse:if user_id == "":  # 如果用户id为空,则为添加用户db_set.create_user(user_name, user_passwd, user_group)   # 添加用户QMessageBox.information(self, "提示", "新用户已添加!")  # 弹出提示对话框else:db_set.edit_user(user_name, user_passwd, user_group, user_id)   # 编辑用户QMessageBox.information(self, "提示", "用户信息保存成功!")  # 弹出提示对话框# uiproj.conn.commit()  # 提交数据库# c.close()  # 关闭游标self.close()  # 关闭窗口uiproj.form_user_manage.tableView.model.query.emit("SELECT id, 用户, 密码, 用户组 FROM users")  # 设置表格的查询数据,刷新显示uiproj.form_login.all_users.emit()   # 发送所有用户信号到登录窗口,用以更新登录窗口下拉列表的内容self.btn_submit.clicked.connect(on_btn_submit_clicked)  # 点击“提交保存”按钮保存用户信息@Slot()def user_details_emit(user):  # 传递用户详细信息信号self.lineEdit_ID.setText(str(user[0]))   # 传递用户id信号self.lineEdit_name.setText(user[1])      # 传递用户名信号self.lineEdit_passwd.setText(user[2])    # 传递用户密码信号self.combo_group.setCurrentText(user[3])  # 传递用户组信号# self.user_id.emit(self.id)  # 传递用户id信号# print(user)self.user_details.connect(user_details_emit)  # 传递用户详细信息信号

相关文章:

基于深度学习的视觉检测小项目(十七) 用户管理后台的编程

完成了用户管理功能的阶段。下一阶段进入AI功能相关。所有的资源见文章链接。 补充完后台代码的用户管理界面代码: import sqlite3from PySide6.QtCore import Slot from PySide6.QtWidgets import QDialog, QMessageBoxfrom . import user_manage # 导入使用ui…...

实战:利用百度站长平台加速网站收录

本文转自:百万收录网 原文链接:https://www.baiwanshoulu.com/33.html 利用百度站长平台加速网站收录是一个实战性很强的过程,以下是一些具体的步骤和策略: 一、了解百度站长平台 百度站长平台是百度为网站管理员提供的一系列工…...

web-XSS-CTFHub

前言 在众多的CTF平台当中,作者认为CTFHub对于初学者来说,是入门平台的不二之选。CTFHub通过自己独特的技能树模块,可以帮助初学者来快速入门。具体请看官方介绍:CTFHub。 作者更新了CTFHub系列,希望小伙伴们多多支持…...

【C++】P1957 口算练习题

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯题目描述输入格式:输出格式: 💯我的做法代码实现: 💯老师的做法代码实现: 💯对比分析&am…...

第二十三章 MySQL锁之表锁

目录 一、概述 二、语法 三、特点 一、概述 表级锁,每次操作锁住整张表。锁定粒度大,发生锁冲突的概率最高,并发度最低。应用在MyISAM、InnoDB、BDB等存储引擎中。 对于表级锁,主要分为以下三类: 1. 表锁 2. 元数…...

linux 进程补充

环境变量 基本概念 环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数 如:我们在编写C/C代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪 里,但是照样可以链接成功&#…...

渗透测试之文件包含漏洞 超详细的文件包含漏洞文章

目录 说明 通常分为两种类型: 本地文件包含 典型的攻击方式1: 影响: 典型的攻击方式2: 包含路径解释: 日志包含漏洞: 操作原理 包含漏洞读取文件 文件包含漏洞远程代码执行漏洞: 远程文件包含…...

Java 大视界 -- Java 大数据在智能医疗影像诊断中的应用(72)

💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也期待你毫无保留地分享独特见解,愿我们于此携手成长,共赴新程!💖 一、…...

Web - CSS3浮动定位与背景样式

概述 这篇文章主要介绍了 CSS3 中的浮动定位、背景样式、变形效果等内容。包括 BFC 规范与创建方法、浮动的功能与使用要点、定位的多种方式及特点、边框与圆角的设置、背景的颜色、图片等属性、多种变形效果及 3D 旋转等,还提到了浏览器私有前缀。 BFC规范与浏览…...

ConcurrentHashMap线程安全:分段锁 到 synchronized + CAS

专栏系列文章地址:https://blog.csdn.net/qq_26437925/article/details/145290162 本文目标: 理解ConcurrentHashMap为什么线程安全;ConcurrentHashMap的具体细节还需要进一步研究 目录 ConcurrentHashMap介绍JDK7的分段锁实现JDK8的synchr…...

系统学习算法:专题九 穷举vs暴搜vs深搜vs回溯vs剪枝

其中标题的深搜,回溯,剪枝我们之前专题都已经有过学习和了解,这里多了两个穷举和暴搜,其实意思都差不多,穷举就是穷尽力气将所有情况都列举出来,暴搜就是暴力地去一个一个情况搜索,所以就是全部…...

解决 Pandas DataFrame 索引错误:KeyError:0

在使用 Pandas 处理数据时,KeyError 是一个常见的问题,尤其是在尝试通过索引访问数据时。本文将通过一个实际案例(使用SKLearn中的MINIST数据集为例),详细分析 KeyError 的原因,并提供解决方法。 1 问题背…...

deepseek的对话风格

概述 deepseek的对话风格,比一般的模型的回答多了思考过程,这是它比较可爱的地方,模型的回答有了思考过程,对用户而言大模型的回答不完全是一个黑盒。 deepseek的对话风格 train_prompt_style """Below is an…...

制造业设备状态监控与生产优化实战:基于SQL的序列分析与状态机建模

目录 1. 背景与挑战 2. 数据建模与采集 2.1 数据表设计 设备状态表(记录设备实时状态变更)...

Javaweb学习之Mysql(Day5)

(一)Mysql概述 (1)MYSQL通用语法 SQL语句可以单行或多行书写,以分号结尾。 SQL语句可以使用空格/缩进来增强语句的可读性(即,空格和缩进不影响代码的执行)。 MySQL数据库的SQL语句不区分大小写。 注释: 1. 单行注释: -- 注释内容 或 # 注释内容 (MySQL 特有 …...

C++ Primer 迭代器

欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…...

Java的String与StringBuilder例题

​​ package com.jiachen.StringBuilderDemo1;import java.util.Scanner;public class Exercise2 {public static void main(String[] args) {Scanner scanner new Scanner(System.in);String s scanner.nextLine().trim(); // 读取输入并去除前后空格String result;// 根据…...

Vue.js 如何选择合适的组件库

Vue.js 如何选择合适的组件库 大家在开发 Vue.js 项目的时候,都会面临一个问题:我该选择哪个组件库? 市面上有很多优秀的 Vue 组件库,比如 Element Plus、Vuetify、Quasar 等,它们各有特点。选择合适的组件库&#xf…...

github下载失败网页打开失败 若你已经知道github地址如何cmd下载

直接打开命令行: winr cmd 输入:git clone 地址 eg:git clone https://github.com/akospasztor/stm32f103-dfu-bootloader...

排序算法--计数排序

统计每个元素出现的次数,直接计算元素在有序序列中的位置,要求数据是整数且范围有限。适用于数据为小范围整数(如年龄、成绩),数据重复率较高时效率更优。可用于小范围整数排序、基数排序的底层排序(作为基数排序的稳定…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes&#xff0…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...

CMake控制VS2022项目文件分组

我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)

漏洞概览 漏洞名称:Apache Flink REST API 任意文件读取漏洞CVE编号:CVE-2020-17519CVSS评分:7.5影响版本:Apache Flink 1.11.0、1.11.1、1.11.2修复版本:≥ 1.11.3 或 ≥ 1.12.0漏洞类型:路径遍历&#x…...