基于深度学习的视觉检测小项目(十七) 用户管理后台的编程
完成了用户管理功能的阶段。下一阶段进入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) # 传递用户详细信息信号