逻辑改进
This commit is contained in:
63
main.py
63
main.py
@@ -1,12 +1,11 @@
|
||||
from textual.app import App, ComposeResult
|
||||
from textual.widgets import Header, Footer, ListView, DirectoryTree, ListItem, Label, Static, Button
|
||||
from textual.containers import Container, Horizontal
|
||||
from textual.widgets import Header, Footer, ListView, ProgressBar, DirectoryTree, ListItem, Label, Static, Button
|
||||
from textual.containers import Container, Horizontal, Center
|
||||
from textual.screen import Screen
|
||||
import pathlib
|
||||
import threading
|
||||
import edge_tts as tts
|
||||
from playsound import playsound
|
||||
from textual.logging import TextualHandler
|
||||
|
||||
import particles as pt
|
||||
from reactor import Reactor, Apparatus
|
||||
@@ -46,17 +45,19 @@ class MemScreen(Screen):
|
||||
self.reactor = Reactor(nucleon_file, electron_file, self, tasked_num)
|
||||
self.stage = 1
|
||||
self.stage += self.reactor.set_round_templated(self.stage)
|
||||
#print(self.reactor.procession)
|
||||
##print(self.reactor.procession)
|
||||
self.reactor.forward()
|
||||
#self.compo:compo.Composition = compo.Placeholder(self)
|
||||
self.compo = next(self.reactor.current_appar)
|
||||
|
||||
|
||||
def compose(self) -> ComposeResult:
|
||||
print(self.compo)
|
||||
#print(self.compo)
|
||||
yield Header(show_clock=True)
|
||||
with Container(id="main_container"):
|
||||
yield from self.compo.compose()
|
||||
with Center():
|
||||
yield Static(f"{len(self.reactor.procession) - self.reactor.index}/{len(self.reactor.procession)}")
|
||||
#yield ProgressBar(total=len(self.reactor.procession) - 1, show_percentage=False, show_eta=False, id="progress")
|
||||
yield from self.compo.compose()
|
||||
yield Footer()
|
||||
|
||||
"""
|
||||
@@ -69,27 +70,23 @@ class MemScreen(Screen):
|
||||
pass
|
||||
|
||||
def on_button_pressed(self, event):
|
||||
ret = self.compo.handler(event)
|
||||
"""feedback_label = self.query_one("#feedback", Static)
|
||||
if type(event) == str:
|
||||
btnid = event
|
||||
else:
|
||||
btnid = event.button.id
|
||||
btnid = str(btnid)
|
||||
quality = int(btnid.replace('q', ''))
|
||||
assessment = self.reactor.report(self.reactor.current_atom, quality)
|
||||
"""
|
||||
# 遵循 perror 返回值规则
|
||||
ret = self.compo.handler(event, "button")
|
||||
self._forward_judge(ret)
|
||||
|
||||
def _forward_judge(self, ret):
|
||||
if ret == -1:
|
||||
return
|
||||
if ret == 0: # 成功
|
||||
try:
|
||||
self.compo = next(self.reactor.current_appar)
|
||||
self.refresh_ui()
|
||||
except StopIteration:
|
||||
nxt = self.reactor.forward(1)
|
||||
print(2)
|
||||
self.compo = next(self.reactor.current_appar)
|
||||
print(self.compo)
|
||||
#print("next", nxt, self.reactor.current_atom)
|
||||
#print(2)
|
||||
try:
|
||||
self.compo = next(self.reactor.current_appar)
|
||||
except:
|
||||
pass
|
||||
if nxt == -1:
|
||||
if self.reactor.round_set == 0:
|
||||
if self.stage == 4:
|
||||
@@ -101,6 +98,8 @@ class MemScreen(Screen):
|
||||
self.reactor.forward(1)
|
||||
#self._update_ui()
|
||||
self.stage += 1
|
||||
self.compo = next(self.reactor.current_appar)
|
||||
self.refresh_ui()
|
||||
return
|
||||
return
|
||||
else:
|
||||
@@ -109,14 +108,14 @@ class MemScreen(Screen):
|
||||
if ret == 1: # 不允许前进
|
||||
self.refresh_ui()
|
||||
return
|
||||
|
||||
|
||||
def refresh_ui(self):
|
||||
area = self.query_one("#main_container")
|
||||
self.call_later(self.recompose)
|
||||
#print(area.children)
|
||||
#self.call_later(lambda: self.query_one("#progress", expect_type=ProgressBar).advance(self.reactor.index))
|
||||
##print(area.children)
|
||||
#for child in list(area.children):
|
||||
# child.remove() # 致敬传奇组件树 DOM
|
||||
#print(1,list(self.compo.compose()))
|
||||
##print(1,list(self.compo.compose()))
|
||||
#area.mount(*list(self.compo.compose()))
|
||||
|
||||
def report(self, quality):
|
||||
@@ -143,17 +142,17 @@ class MemScreen(Screen):
|
||||
#feedback_label.update("") # 清除反馈消息
|
||||
self._update_ui()"""
|
||||
|
||||
def action_press(self, btnid):
|
||||
self.on_button_pressed(btnid)
|
||||
#def action_press(self, btnid):
|
||||
# self.on_button_pressed(btnid)
|
||||
|
||||
def action_play_voice(self):
|
||||
def play():
|
||||
cache_dir = pathlib.Path(f"./cache/voice/")
|
||||
cache_dir.mkdir(parents = True, exist_ok = True)
|
||||
cache = cache_dir / f"{self.reactor.current_atom[1].content}.wav"
|
||||
cache = cache_dir / f"{self.reactor.current_atom[1].content.replace("/","")}.wav"
|
||||
if not cache.exists():
|
||||
communicate = tts.Communicate(self.reactor.current_atom[1].content, "zh-CN-YunjianNeural")
|
||||
communicate.save_sync(f"./cache/voice/{self.reactor.current_atom[1].content}.wav")
|
||||
communicate = tts.Communicate(self.reactor.current_atom[1].content.replace("/",""), "zh-CN-YunjianNeural")
|
||||
communicate.save_sync(f"./cache/voice/{self.reactor.current_atom[1].content.replace("/","")}.wav")
|
||||
playsound(str(cache))
|
||||
threading.Thread(target=play).start()
|
||||
|
||||
@@ -267,7 +266,7 @@ class AppLauncher(App):
|
||||
}
|
||||
|
||||
def on_mount(self) -> None:
|
||||
self.action_toggle_dark()
|
||||
#self.action_toggle_dark()
|
||||
self.push_screen("file_selection_screen")
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
Reference in New Issue
Block a user