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

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

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

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

import sqlite3

from PySide6.QtCore import Slot
from PySide6.QtWidgets import QDialog, QMessageBox

from . 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")  # 获取用户id
                    db_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 sqlite3

from PySide6.QtCore import Slot, Signal, QObject
from PySide6.QtWidgets import QDialog, QMessageBox

from . 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, "警告", "用户信息不能为空!")  # 弹出警告对话框
                return
            else:
                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)  # 传递用户详细信息信号


http://www.kler.cn/a/531676.html

相关文章:

  • 整形的存储形式和浮点型在计算机中的存储形式
  • C基础寒假练习(2)
  • ChatGPT怎么回事?
  • STM32 对射式红外传感器配置
  • [HOT 100] 2824. 统计和小于目标的下标对数目
  • 【信息系统项目管理师-选择真题】2021上半年综合知识答案和详解
  • 如何确认Linux嵌入式系统的触摸屏对应的是哪个设备文件(/dev/input/event1)?如何查看系统中所有的输入设备?输入设备的设备文件有什么特点?
  • Linux进阶——例行性工作
  • PDFBox 替代方案(以及何时考虑更换)
  • 测试工程师的DS使用指南
  • 栈(5题)
  • 并行计算、分布式计算与云计算:概念剖析与对比研究(表格对比)
  • 【hot100】刷题记录(12)-回文链表
  • DeepSeek 核心技术全景解析
  • 排序算法3
  • Heptagon 同步语言介绍
  • 基于kamailio开发一个voip管理系统需要实现的基础功能
  • 如何在5步内使用 Spring AI 和 OpenAI 的 DALL-E 3 生成图像
  • 顺序打印数字的进一步理解
  • M. Triangle Construction
  • 注解与反射基础
  • 巧妙利用数据结构优化部门查询
  • Nginx 命令行参数
  • 深入探讨DICOM医学影像中的WADO服务及其具体实现
  • 内核定时器1-普通定时器
  • 浅谈线段树