Files

111 lines
3.8 KiB
Python

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
# @Time : 2026/3/4 11:14
# @Author : reenrr
# @File : sub_uiPasswdChange.py
# @Desc : 密码修改界面的功能逻辑
"""
# 设备调试内嵌页面子类
from re import T
from PySide6.QtWidgets import QWidget, QMessageBox, QDialog
from PySide6.QtCore import Qt, Slot
from wndMain.pagePasswdChange.uiPasswdChange import Ui_dlgChangePasswd
from msg_dict import g_uiGeometrySize
from dbCtrl.clsUserTb import g_userCtrl
class CPasswdChange(QDialog):
# public:
def __init__(self, userID: str, widgetSize: tuple[int, int]=(375, 293), parent=None):
super().__init__(parent)
self.ui = Ui_dlgChangePasswd()
self.ui.setupUi(self)
# 按需声明对应的成员变量
self.szStack = widgetSize
self.user = userID
pass
# 界面初始化
def uiInit(self) -> None:
self._screenAdapter() # 界面自适应
# self._changeWndStyle() # 设置成无框架边框
self._centerWidget() # 居中显示
self._setCurrentUser() # 设置当前用户
self._setupSignalSlotMapping() # 创建信号映射
pass
# ----------------------------------------
# private:
# 界面自适应
def _screenAdapter(self) -> None:
self.resize(self.szStack[0], self.szStack[1])
# self.ui.widgetPasswdChange.setGeometry(g_uiGeometrySize['WND_MARGIN_HORI'], g_uiGeometrySize['WND_MARGIN_VERT'],
# self.szStack[0] - g_uiGeometrySize['WND_MARGIN_HORI'] * 2,
# self.szStack[1] - g_uiGeometrySize['WND_MARGIN_VERT'] * 2)
pass
# 修改窗体属性
def _changeWndStyle(self) -> None:
self.setWindowFlags(Qt.WindowType.FramelessWindowHint)
pass
# 窗口居中显示
def _centerWidget(self) -> None:
pass
# 设置当前用户
def _setCurrentUser(self) -> None:
self.ui.edtCurrentUser_PasswdChg.setText(self.user)
pass
def _setNewPasswd(self) -> None:
# 获取输入的密码
origin_passwd = self.ui.edtOrigin_PasswdChg.text() # 原密码
new_passwd = self.ui.edtNew_PasswdChg.text() # 新密码
confirm_passwd = self.ui.edtConf_PasswdChg.text() # 确认密码
# 验证输入
if not origin_passwd or not new_passwd or not confirm_passwd:
QMessageBox.warning(self, "提示", "请填写完整密码信息")
return
# 验证原密码是否正确
current_user = self.user
stored_passwd = g_userCtrl.getPasswdByUserID(current_user)
if origin_passwd != stored_passwd:
QMessageBox.warning(self, "提示", "原密码错误")
return
# 验证新密码和确认密码是否一致
if new_passwd != confirm_passwd:
QMessageBox.warning(self, "提示", "新密码和确认密码不一致")
return
# 更新密码
success = g_userCtrl.changePasswd(current_user, new_passwd)
if success:
QMessageBox.information(self, "提示", "密码修改成功")
return True
else:
QMessageBox.warning(self, "提示", "密码修改失败")
return False
# 建立信号槽连接
def _setupSignalSlotMapping(self) -> None:
self.ui.btnDecide_PasswdChg.clicked.connect(self._confChangePasswd)
# ----------------信号槽接口----------------
@Slot()
def _confChangePasswd(self) -> None:
success = self._setNewPasswd()
# 仅在密码修改成功时关闭窗口
if success:
self.close()
pass