111 lines
3.8 KiB
Python
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
|
||
|
|
|