From 803fe4568fcd9c55d2e17f2a2814176031058af3 Mon Sep 17 00:00:00 2001 From: DLmaster361 Date: Fri, 16 May 2025 23:23:02 +0800 Subject: [PATCH] =?UTF-8?q?chore(ui):=20=E4=BC=98=E5=8C=96=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/ui/Widget.py | 32 ++++++++++++++++++++++++++++++++ app/ui/member_manager.py | 32 +++++++++----------------------- 2 files changed, 41 insertions(+), 23 deletions(-) diff --git a/app/ui/Widget.py b/app/ui/Widget.py index cf7f201..55b3c1d 100644 --- a/app/ui/Widget.py +++ b/app/ui/Widget.py @@ -933,6 +933,38 @@ class TimeEditSettingCard(SettingCard): self.TimeEdit.setTime(QTime.fromString(value, "HH:mm")) +class StatusSwitchSetting(SwitchButton): + + def __init__( + self, + qconfig: QConfig, + configItem_check: ConfigItem, + configItem_enable: ConfigItem, + parent=None, + ): + super().__init__(parent) + self.qconfig = qconfig + self.configItem_check = configItem_check + self.configItem_enable = configItem_enable + self.setOffText("") + self.setOnText("") + + if configItem_check: + self.setValue(self.qconfig.get(configItem_check)) + configItem_check.valueChanged.connect(self.setValue) + if configItem_enable: + self.setEnabled(self.qconfig.get(configItem_enable)) + configItem_enable.valueChanged.connect(self.setEnabled) + + self.checkedChanged.connect(self.setValue) + + def setValue(self, isChecked: bool): + if self.configItem_check: + self.qconfig.set(self.configItem_check, isChecked) + + self.setChecked(isChecked) + + class HistoryCard(HeaderCardWidget): def __init__(self, qconfig: QConfig, configItem: ConfigItem, parent=None): diff --git a/app/ui/member_manager.py b/app/ui/member_manager.py index 0de0e92..34ff739 100644 --- a/app/ui/member_manager.py +++ b/app/ui/member_manager.py @@ -47,7 +47,6 @@ from qfluentwidgets import ( PushSettingCard, TableWidget, PrimaryToolButton, - SwitchButton, ) from PySide6.QtCore import Signal from datetime import datetime @@ -72,6 +71,7 @@ from .Widget import ( SwitchSettingCard, PushAndSwitchButtonSettingCard, PushAndComboBoxSettingCard, + StatusSwitchSetting, PivotArea, ) @@ -1173,13 +1173,6 @@ class MemberManager(QWidget): Config.PASSWORD_refreshed.connect(self.load_info) def load_info(self): - # 使用闭包工厂函数捕获当前config: - def create_handler(config_obj): - def handler(checked): - # 使用配置项的set方法自动触发信号 - config_obj.set(config_obj.Info_Status, checked) - - return handler self.user_data = Config.member_dict[self.name]["UserData"] @@ -1188,7 +1181,6 @@ class MemberManager(QWidget): for name, info in self.user_data.items(): config = info["Config"] - handler = create_handler(config) text_list = [] if not config.get(config.Data_IfPassCheck): @@ -1209,7 +1201,6 @@ class MemberManager(QWidget): else "本周剿灭未完成" ) - # 跳转按钮 button = PrimaryToolButton( FluentIcon.CHEVRON_RIGHT, self ) @@ -1218,18 +1209,6 @@ class MemberManager(QWidget): partial(self.switch_to.emit, name) ) - # 状态开关 - switch_button = SwitchButton() - switch_button.setOffText("") - switch_button.setOnText("") - # 初始化开关状态 - switch_button.setChecked(config.get(config.Info_Status)) - switch_button.setEnabled( - config.get(config.Info_RemainedDay) != 0 - ) - # 将开关的bool同步 - switch_button.checkedChanged.connect(handler) - self.dashboard.setItem( int(name[3:]) - 1, 0, @@ -1253,7 +1232,14 @@ class MemberManager(QWidget): ), ) self.dashboard.setCellWidget( - int(name[3:]) - 1, 3, switch_button + int(name[3:]) - 1, + 3, + StatusSwitchSetting( + qconfig=config, + configItem_check=config.Info_Status, + configItem_enable=config.Info_RemainedDay, + parent=self, + ), ) self.dashboard.setItem( int(name[3:]) - 1,