From c7219a2555f2ecff941dca3af10aaa206610302b Mon Sep 17 00:00:00 2001 From: Shuming Liu Date: Wed, 12 Aug 2026 13:07:48 +0800 Subject: [PATCH] cc --- README.md | 1 + media_player.py | 66 +++---------------------------------------------- 2 files changed, 5 insertions(+), 62 deletions(-) diff --git a/README.md b/README.md index d6bd790..cb5f647 100644 --- a/README.md +++ b/README.md @@ -69,6 +69,7 @@ pip install -r requirements.txt | `←` / `→` | 后退 / 前进 10 秒 | | `Shift+←` / `Shift+→` | 后退 / 前进 60 秒 | | `↑` / `↓` | 音量 +5 / -5 | +| `Ctrl+↑` / `Ctrl+↓` | 快进步长 +5 / -5 秒(macOS 亦支持 `Command+↑ / ↓`) | | `M` | 静音 / 恢复 | | `Ctrl+←` / `Ctrl+→` | 上一首 / 下一首(macOS 亦支持 `Command+← / →`) | | `N` / `P` | 下一首 / 上一首 | diff --git a/media_player.py b/media_player.py index 8be8cf9..843ab36 100644 --- a/media_player.py +++ b/media_player.py @@ -830,7 +830,6 @@ class MediaPlayerApp(tk.Tk): self.current_index = -1 self.volume = 80 self.rate = 1.0 - self.seek_step = self._load_settings() self.loop_mode = "list" self._seeking = False self._switching_until = 0.0 @@ -964,27 +963,10 @@ class MediaPlayerApp(tk.Tk): self.seekbar = SeekBar(bottom, command=self._on_seek_command) self.seekbar.pack(fill="x") - controls = ttk.Frame(bottom) - controls.pack(fill="x", pady=(4, 0)) self.time_var = tk.StringVar(value="00:00 / --:--") self.status_var = tk.StringVar(value="就绪 — 打开文件或按 Ctrl+O") - self.seek_step_var = tk.StringVar(value=str(self.seek_step)) - ttk.Label(controls, textvariable=self.time_var).pack(side="left", anchor="w") - ttk.Label(controls, text="快进步长:").pack(side="left", padx=(16, 4)) - self.seek_step_spin = ttk.Spinbox( - controls, - from_=1, - to=600, - increment=1, - width=5, - textvariable=self.seek_step_var, - command=self._commit_seek_step, - ) - self.seek_step_spin.pack(side="left") - ttk.Label(controls, text="秒").pack(side="left", padx=(4, 0)) - self.seek_step_spin.bind("", self._on_seek_step_return) - self.seek_step_spin.bind("", lambda _e: self._commit_seek_step()) - ttk.Label(controls, textvariable=self.status_var, anchor="e").pack(side="right", fill="x", expand=True) + ttk.Label(bottom, textvariable=self.time_var).pack(side="left", anchor="w") + ttk.Label(bottom, textvariable=self.status_var, anchor="e").pack(side="right", fill="x", expand=True) def _bind_shortcuts(self): shortcuts = [ @@ -1033,11 +1015,11 @@ class MediaPlayerApp(tk.Tk): return "break" def _on_left(self, _event): - self.seek_relative(-self.seek_step) + self.seek_relative(-SEEK_STEP) return "break" def _on_right(self, _event): - self.seek_relative(self.seek_step) + self.seek_relative(SEEK_STEP) return "break" def _on_up(self, _event): @@ -1136,26 +1118,6 @@ class MediaPlayerApp(tk.Tk): def _playlist_path(self): return Path.home() / ".mediaplayer_playlist.json" - def _settings_path(self): - return Path.home() / ".mediaplayer_settings.json" - - def _load_settings(self): - try: - data = json.loads(self._settings_path().read_text(encoding="utf-8")) - value = int(data.get("seek_step", SEEK_STEP)) - except Exception: - value = SEEK_STEP - return value if 1 <= value <= 600 else SEEK_STEP - - def _save_settings(self): - try: - self._settings_path().write_text( - json.dumps({"seek_step": self.seek_step}, ensure_ascii=False, indent=2), - encoding="utf-8", - ) - except Exception as exc: - print("保存设置失败:", exc) - def _save_playlist(self): try: data = {"playlist": list(self.playlist), "current_index": self.current_index} @@ -1266,26 +1228,6 @@ class MediaPlayerApp(tk.Tk): return self.seek_to(pos + seconds * 1000) - def _commit_seek_step(self): - raw = self.seek_step_var.get().strip() - try: - value = int(float(raw)) - except ValueError: - value = 0 - if not 1 <= value <= 600: - self.seek_step_var.set(str(self.seek_step)) - self.status_var.set("快进步长需为 1-600 之间的整数") - return - if value != self.seek_step: - self.seek_step = value - self._save_settings() - self.status_var.set(f"快进步长已设为 {value} 秒(已保存)") - - def _on_seek_step_return(self, _event): - self._commit_seek_step() - self.focus_set() - return "break" - def seek_to(self, ms): ms = max(0, int(ms)) if not self.engine.seek(ms):