#!/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