Compare commits

..

2 Commits

Author SHA1 Message Date
b3c264e910 continue fixing.... 2026-08-12 13:16:40 +08:00
c7219a2555 cc 2026-08-12 13:07:48 +08:00
2 changed files with 27 additions and 2 deletions

View File

@@ -69,6 +69,7 @@ pip install -r requirements.txt
| `←` / `→` | 后退 / 前进 10 秒 |
| `Shift+←` / `Shift+→` | 后退 / 前进 60 秒 |
| `↑` / `↓` | 音量 +5 / -5 |
| `Ctrl+↑` / `Ctrl+↓` | 快进步长 +1 / -1 秒(macOS 亦支持 `Command+↑ / ↓`) |
| `M` | 静音 / 恢复 |
| `Ctrl+←` / `Ctrl+→` | 上一首 / 下一首(macOS 亦支持 `Command+← / →`) |
| `N` / `P` | 下一首 / 上一首 |

View File

@@ -12,6 +12,7 @@
← / → 后退 / 前进 10 秒
Shift+← / → 后退 / 前进 60 秒
↑ / ↓ 音量 +5 / -5
Ctrl+↑ / ↓ 快进步长 +1 / -1 秒(macOS 亦支持 Command+↑ / ↓)
M 静音 / 恢复
Ctrl+← / → 上一首 / 下一首(macOS 也支持 Command+← / →)
N / P 下一首 / 上一首
@@ -999,6 +1000,10 @@ class MediaPlayerApp(tk.Tk):
("<Command-Right>", lambda _e: self.next_track()),
("<Up>", self._on_up),
("<Down>", self._on_down),
("<Control-Up>", lambda _e: self.adjust_seek_step(1)),
("<Control-Down>", lambda _e: self.adjust_seek_step(-1)),
("<Command-Up>", lambda _e: self.adjust_seek_step(1)),
("<Command-Down>", lambda _e: self.adjust_seek_step(-1)),
("<m>", lambda _e: self.toggle_mute()),
("<M>", lambda _e: self.toggle_mute()),
("<Control-o>", lambda _e: self.open_files()),
@@ -1024,10 +1029,19 @@ class MediaPlayerApp(tk.Tk):
("<Return>", lambda _e: self.play_selected()),
]
for sequence, handler in shortcuts:
self.bind(sequence, handler)
self.listbox.bind(sequence, handler)
wrapped = self._break_handler(handler)
self.bind(sequence, wrapped)
self.listbox.bind(sequence, wrapped)
self.listbox.bind("<Double-Button-1>", lambda _e: self.play_selected())
@staticmethod
def _break_handler(handler):
"""包装快捷键回调:执行后返回 "break",阻止事件继续冒泡造成重复触发。"""
def run(event):
handler(event)
return "break"
return run
def _on_space(self, _event):
self.toggle_play()
return "break"
@@ -1281,6 +1295,16 @@ class MediaPlayerApp(tk.Tk):
self._save_settings()
self.status_var.set(f"快进步长已设为 {value} 秒(已保存)")
def adjust_seek_step(self, delta):
value = max(1, min(600, self.seek_step + delta))
if value == self.seek_step:
self.status_var.set(f"快进步长已到{'上限' if delta > 0 else '下限'}({value} 秒)")
return
self.seek_step = value
self.seek_step_var.set(str(value))
self._save_settings()
self.status_var.set(f"快进步长已设为 {value} 秒(已保存)")
def _on_seek_step_return(self, _event):
self._commit_seek_step()
self.focus_set()