From 5bdb5ad2bfa21acd5773d0f12790a8296ac8c6e0 Mon Sep 17 00:00:00 2001 From: Zrief <103112786+Zrief@users.noreply.github.com> Date: Thu, 15 May 2025 21:20:30 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=84=9A=E6=9C=AC=E4=BB=AA?= =?UTF-8?q?=E8=A1=A8=E7=9B=98=E6=8E=92=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 可以直接在仪表盘里面开关用户状态了 --- app/ui/Widget.py | 12 ++++++++---- app/ui/member_manager.py | 33 +++++++++++++++++++++++---------- 2 files changed, 31 insertions(+), 14 deletions(-) diff --git a/app/ui/Widget.py b/app/ui/Widget.py index cf7f201..7b73003 100644 --- a/app/ui/Widget.py +++ b/app/ui/Widget.py @@ -311,12 +311,16 @@ class SwitchSettingCard(SettingCard): self.switchButton.setChecked(isChecked) self.switchButton.setText(self.tr("On") if isChecked else self.tr("Off")) + + # 这两个函数似乎没用?我注释掉仍能运行。 + # setChecked是qfluentw中SwitchButton类的内置方法, + # Example:switchButton.setChecked(True)# 更改按钮状态为打开 - def setChecked(self, isChecked: bool): - self.setValue(isChecked) + # def setChecked(self, isChecked: bool): + # self.setValue(isChecked) - def isChecked(self): - return self.switchButton.isChecked() + # def isChecked(self): + # return self.switchButton.isChecked() class RangeSettingCard(SettingCard): diff --git a/app/ui/member_manager.py b/app/ui/member_manager.py index 1e7c407..2a4014e 100644 --- a/app/ui/member_manager.py +++ b/app/ui/member_manager.py @@ -47,8 +47,9 @@ from qfluentwidgets import ( PushSettingCard, TableWidget, PrimaryToolButton, + SwitchButton, ) -from PySide6.QtCore import Signal +from PySide6.QtCore import Signal,Qt from datetime import datetime from functools import partial from pathlib import Path @@ -1162,6 +1163,12 @@ 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"] @@ -1170,6 +1177,7 @@ 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): @@ -1190,6 +1198,7 @@ class MemberManager(QWidget): else "本周剿灭未完成" ) + # 跳转按钮 button = PrimaryToolButton( FluentIcon.CHEVRON_RIGHT, self ) @@ -1198,6 +1207,15 @@ class MemberManager(QWidget): partial(self.switch_to.emit, name) ) + # 状态开关 + switch_button = SwitchButton() + switch_button.setOffText("") + switch_button.setOnText("") + switch_button.setChecked(True if config.get(config.Info_Status) + and config.get(config.Info_RemainedDay) != 0 else False )# 初始化开关状态 + # 将开关的bool同步 + switch_button.checkedChanged.connect(handler) + self.dashboard.setItem( int(name[3:]) - 1, 0, @@ -1220,15 +1238,10 @@ class MemberManager(QWidget): else "******" ), ) - self.dashboard.setItem( - int(name[3:]) - 1, - 3, - QTableWidgetItem( - "启用" - if config.get(config.Info_Status) - and config.get(config.Info_RemainedDay) != 0 - else "禁用" - ), + self.dashboard.setCellWidget( + int(name[3:]) - 1, + 3, + switch_button ) self.dashboard.setItem( int(name[3:]) - 1,