TG-PlatformPlus/userForm.py

114 lines
4.7 KiB
Python

import json
from PyQt6 import *
from PyQt6.QtCore import *
from PyQt6.QtGui import *
from PyQt6.QtWidgets import *
from ui.Ui_userForm import Ui_userForm
from userModel.userManager import userManager
from createUserDlg import CreateUserDlg
from common import common
from common import AlignDelegate
class UserForm(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.ui = Ui_userForm()
self.ui.setupUi(self)
self.userModel = QStandardItemModel()
self.createUserDlg = CreateUserDlg()
self.createUserDlg.createFinished.connect(self.createuserFinished)
self.createUserDlg.editFinished.connect(self.edituserFinished)
self.ui.tableViewUser.doubleClicked.connect(self.editUser)
self.ui.tableViewUser.setModel(self.userModel)
self.ui.pbCreateUser.clicked.connect(self.createUser)
self.ui.pbEditUser.clicked.connect(self.editUser)
self.ui.pbDeleteUser.clicked.connect(self.deleteUser)
self.loadUser()
self.batchSetItemDelegate()
def batchSetItemDelegate(self):
self.ui.tableViewUser.horizontalHeader().setDefaultAlignment(Qt.AlignmentFlag.AlignLeft|Qt.AlignmentFlag.AlignVCenter)
self.ui.tableViewUser.setItemDelegate(AlignDelegate(self.ui.tableViewUser))
def createUser(self):
self.createUserDlg.showCreateDlg()
def editUser(self):
if self.ui.tableViewUser.selectionModel().hasSelection():
row = self.ui.tableViewUser.selectionModel().currentIndex().row()
row_index = self.userModel.index(row, 0, QModelIndex())
userId = self.userModel.data(row_index, Qt.ItemDataRole.DisplayRole)
data = userManager.getInfo(userId)
if data:
self.createUserDlg.showEditDlg(data)
def refreshSelect(self):
self.loadUser()
def deleteUser(self):
if self.ui.tableViewUser.selectionModel().hasSelection():
indexs = self.ui.tableViewUser.selectionModel().selectedRows()
if len(indexs) == 1:
row = indexs[0].row()
row_userName_index = self.userModel.index(row, 1, QModelIndex())
reply = QMessageBox.question(self, '删除用户', f'是否删除 {self.userModel.data(row_userName_index, Qt.ItemDataRole.DisplayRole)}?',
QMessageBox.StandardButton.Yes | QMessageBox.StandardButton.No, QMessageBox.StandardButton.No)
if reply == QMessageBox.StandardButton.Yes:
row_index = self.userModel.index(row, 0, QModelIndex())
userId = self.userModel.data(row_index, Qt.ItemDataRole.DisplayRole)
if userManager.delete(userId):
self.userModel.removeRow(row)
else:
QMessageBox.warning(self, '警告', '请选择要删除的用户', QMessageBox.StandardButton.Ok)
return
def resizeEvent(self, event):
# 在窗口或控件的尺寸发生变化时调用
super().resizeEvent(event)
self.setAllColumnWidth()
# 创建完成
def createuserFinished(self):
self.loadUser()
if self.userModel.rowCount() > 0:
self.ui.tableViewUser.selectRow(self.userModel.rowCount()-1)
# 编辑完成
def edituserFinished(self):
if len(self.ui.tableViewUser.selectionModel().selectedRows())== 1:
row = self.ui.tableViewUser.selectionModel().selectedRows()[0].row()
self.loadUser()
if self.userModel.rowCount() > 0:
self.ui.tableViewUser.selectRow(row)
# 加载用户
def loadUser(self):
users = userManager.getInfo()
if len(users) > 0:
self.userModel.clear()
for user in users:
index = self.userModel.rowCount()
self.userModel.setItem(index, 0, QStandardItem(str(user["id"])))
self.userModel.setItem(index, 1, QStandardItem(user["name"]))
self.userModel.setItem(index, 2, QStandardItem(user["password"]))
self.userModel.setItem(index, 3, QStandardItem(user["role_name"]))
self.batchOperation()
# 批量操作
def batchOperation(self):
self.setAllHorizontalHeaderLabels()
self.hideAllColumn()
self.setAllColumnWidth()
# 批量设置列宽
def setAllColumnWidth(self):
common.resizeDefTableView(self.ui.tableViewUser, [1,2,3])
# 批量设置标题
def setAllHorizontalHeaderLabels(self):
self.userModel.setHorizontalHeaderLabels(["ID"," 用户名"," 密码"," 角色"])
# 隐藏指定列
def hideAllColumn(self):
self.ui.tableViewUser.setColumnHidden(0, True)