From cb062788a7999e5d1435f668cdcf9fdf4e336c1f Mon Sep 17 00:00:00 2001 From: david-ajax Date: Wed, 1 Oct 2025 12:59:41 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=86=8D=E5=AD=A6=E4=B9=A0?= =?UTF-8?q?=E6=9C=BA=E5=88=B6=E5=92=8C=E7=8A=B6=E6=80=81=E5=8F=8D=E9=A6=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- compositions.py | 20 ++++++++++++-------- screens.py | 27 ++++++++++++++++++++++----- 2 files changed, 34 insertions(+), 13 deletions(-) diff --git a/compositions.py b/compositions.py index 0b39ace..0a16f2f 100644 --- a/compositions.py +++ b/compositions.py @@ -29,6 +29,7 @@ class Composition: screen: Screen, reactor, atom: Tuple[pt.Electron, pt.Nucleon, Dict] = pt.Atom.placeholder(), + extra = {} ): self.screen = screen self.atom = atom @@ -58,7 +59,7 @@ class Composition: class Finished(Composition): - def __init__(self, screen: Screen, reactor, atom: Tuple[pt.Electron, pt.Nucleon, Dict]): + def __init__(self, screen: Screen, reactor, atom: Tuple[pt.Electron, pt.Nucleon, Dict], extra = {}): super().__init__(screen, reactor, atom) def compose(self): @@ -66,7 +67,7 @@ class Finished(Composition): class Placeholder(Composition): - def __init__(self, screen: Screen): + def __init__(self, screen: Screen, extra = {}): self.screen = screen def compose(self): @@ -78,7 +79,7 @@ class Placeholder(Composition): class Recognition(Composition): - def __init__(self, screen: Screen, reactor, atom: Tuple[pt.Electron, pt.Nucleon, Dict]): + def __init__(self, screen: Screen, reactor, atom: Tuple[pt.Electron, pt.Nucleon, Dict], extra = {}): super().__init__(screen, reactor, atom) def compose(self): @@ -130,7 +131,7 @@ class Recognition(Composition): class BasicEvaluation(Composition): - def __init__(self, screen: Screen, reactor, atom: Tuple[pt.Electron, pt.Nucleon, Dict]): + def __init__(self, screen: Screen, reactor, atom: Tuple[pt.Electron, pt.Nucleon, Dict], extra = {}): super().__init__(screen, reactor, atom) def compose(self): @@ -167,8 +168,9 @@ class BasicEvaluation(Composition): class FillBlank(Composition): - def __init__(self, screen: Screen, reactor, atom: Tuple[pt.Electron, pt.Nucleon, Dict]): + def __init__(self, screen: Screen, reactor, atom: Tuple[pt.Electron, pt.Nucleon, Dict], extra:Dict = {}): super().__init__(screen, reactor, atom) + self.extra = extra self.inputlist = [] self.hashtable = {} self._work() @@ -180,6 +182,8 @@ class FillBlank(Composition): random.shuffle(self.ans) def compose(self): + if self.extra.get("feedback_msg"): + yield Label("反馈提示:" + self.extra["feedback_msg"]) yield Label(self.puzzle.wording, id=self.regid("sentence")) yield Label(f"当前输入: {self.inputlist}", id=self.regid("inputpreview")) for i in self.ans: @@ -206,11 +210,11 @@ class FillBlank(Composition): else: self.inputlist = [] self.reactor.report(self.atom, 2) - return 1 + return 2 class DrawCard(Composition): - def __init__(self, screen: Screen, reactor, atom: Tuple[pt.Electron, pt.Nucleon, Dict]): + def __init__(self, screen: Screen, reactor, atom: Tuple[pt.Electron, pt.Nucleon, Dict], extra = {}): super().__init__(screen, reactor, atom) self.inputlist = [] self.hashtable = {} @@ -247,7 +251,7 @@ class DrawCard(Composition): else: self.inputlist = [] self.reactor.report(self.atom, 2) - return 1 + return 2 registry = { diff --git a/screens.py b/screens.py index 2ab9ad4..eca7fcd 100644 --- a/screens.py +++ b/screens.py @@ -56,6 +56,11 @@ class MemScreen(Screen): print(self.reactor.forward()) #self._forward_judge(first_forward) self.compo = next(self.reactor.current_appar) + self.feedback_state = 0 # 默认状态 + self.feedback_state_map = { + 0: "", + 255: "回答有误, 请重试. 或者重新学习此单元", + } def compose(self) -> ComposeResult: if type(self.compo).__name__ == "Recognition": @@ -63,19 +68,27 @@ class MemScreen(Screen): yield Header(show_clock=True) with Center(): yield Static( - f"{len(self.reactor.procession) - self.reactor.index}/{len(self.reactor.procession)}" + f"当前进度: {len(self.reactor.procession) - self.reactor.index}/{len(self.reactor.procession)}" ) + yield Label(self.feedback_state_map[self.feedback_state]) yield from self.compo.compose() + if self.feedback_state == 255: + yield Button("重新学习此单元", id="re-recognize", variant="warning") yield Footer() def on_mount(self): pass def on_button_pressed(self, event): + try: + if event.button.id == "re-recognize": + return + except: + pass ret = self.compo.handler(event, "button") self._forward_judge(ret) - def _forward_judge(self, ret): + self.feedback_state = 0 if ret == -1: return if ret == 0: @@ -108,7 +121,11 @@ class MemScreen(Screen): else: self.refresh_ui() return - if ret == 1: + if ret >= 1: + if ret == 2: + self.feedback_state = 255 # 表示错误 + else: + self.feedback_state = 0 self.refresh_ui() return @@ -234,12 +251,12 @@ class DashboardScreen(Screen): def compose(self) -> ComposeResult: yield Header(show_clock=True) yield Container( - Label(f'欢迎使用 "潜进" 启发式辅助记忆调度器, 版本 {metadata.ver}', classes="title-label"), + Label(f'欢迎使用 "潜进" 启发式辅助记忆调度器, 版本 {metadata.ver}, 使用 {pt.Electron.algorithm} 调度算法', classes="title-label"), Label(f"当前的 UNIX 日时间戳: {aux.get_daystamp()}"), Label(f'包含时间戳修正: UTC+{config.get("timezone_offset")/3600}'), Label("选择待学习或待修改的记忆单元集:", classes="title-label"), ListView(id="file-list", classes="file-list-view"), - Button("新建空的单元集", id="new_nucleon_button"), + #Button("新建空的单元集", id="new_nucleon_button"), Label(f"\"潜进\" 开放源代码软件项目 | 版本 {metadata.ver} {metadata.stage.capitalize()} | Wang Zhiyu 2025"), ) yield Footer()