Compare commits
2 Commits
7e178582c9
...
b3c264e910
| Author | SHA1 | Date | |
|---|---|---|---|
| b3c264e910 | |||
| c7219a2555 |
@@ -69,6 +69,7 @@ pip install -r requirements.txt
|
|||||||
| `←` / `→` | 后退 / 前进 10 秒 |
|
| `←` / `→` | 后退 / 前进 10 秒 |
|
||||||
| `Shift+←` / `Shift+→` | 后退 / 前进 60 秒 |
|
| `Shift+←` / `Shift+→` | 后退 / 前进 60 秒 |
|
||||||
| `↑` / `↓` | 音量 +5 / -5 |
|
| `↑` / `↓` | 音量 +5 / -5 |
|
||||||
|
| `Ctrl+↑` / `Ctrl+↓` | 快进步长 +1 / -1 秒(macOS 亦支持 `Command+↑ / ↓`) |
|
||||||
| `M` | 静音 / 恢复 |
|
| `M` | 静音 / 恢复 |
|
||||||
| `Ctrl+←` / `Ctrl+→` | 上一首 / 下一首(macOS 亦支持 `Command+← / →`) |
|
| `Ctrl+←` / `Ctrl+→` | 上一首 / 下一首(macOS 亦支持 `Command+← / →`) |
|
||||||
| `N` / `P` | 下一首 / 上一首 |
|
| `N` / `P` | 下一首 / 上一首 |
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
← / → 后退 / 前进 10 秒
|
← / → 后退 / 前进 10 秒
|
||||||
Shift+← / → 后退 / 前进 60 秒
|
Shift+← / → 后退 / 前进 60 秒
|
||||||
↑ / ↓ 音量 +5 / -5
|
↑ / ↓ 音量 +5 / -5
|
||||||
|
Ctrl+↑ / ↓ 快进步长 +1 / -1 秒(macOS 亦支持 Command+↑ / ↓)
|
||||||
M 静音 / 恢复
|
M 静音 / 恢复
|
||||||
Ctrl+← / → 上一首 / 下一首(macOS 也支持 Command+← / →)
|
Ctrl+← / → 上一首 / 下一首(macOS 也支持 Command+← / →)
|
||||||
N / P 下一首 / 上一首
|
N / P 下一首 / 上一首
|
||||||
@@ -999,6 +1000,10 @@ class MediaPlayerApp(tk.Tk):
|
|||||||
("<Command-Right>", lambda _e: self.next_track()),
|
("<Command-Right>", lambda _e: self.next_track()),
|
||||||
("<Up>", self._on_up),
|
("<Up>", self._on_up),
|
||||||
("<Down>", self._on_down),
|
("<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()),
|
||||||
("<M>", lambda _e: self.toggle_mute()),
|
("<M>", lambda _e: self.toggle_mute()),
|
||||||
("<Control-o>", lambda _e: self.open_files()),
|
("<Control-o>", lambda _e: self.open_files()),
|
||||||
@@ -1024,10 +1029,19 @@ class MediaPlayerApp(tk.Tk):
|
|||||||
("<Return>", lambda _e: self.play_selected()),
|
("<Return>", lambda _e: self.play_selected()),
|
||||||
]
|
]
|
||||||
for sequence, handler in shortcuts:
|
for sequence, handler in shortcuts:
|
||||||
self.bind(sequence, handler)
|
wrapped = self._break_handler(handler)
|
||||||
self.listbox.bind(sequence, handler)
|
self.bind(sequence, wrapped)
|
||||||
|
self.listbox.bind(sequence, wrapped)
|
||||||
self.listbox.bind("<Double-Button-1>", lambda _e: self.play_selected())
|
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):
|
def _on_space(self, _event):
|
||||||
self.toggle_play()
|
self.toggle_play()
|
||||||
return "break"
|
return "break"
|
||||||
@@ -1281,6 +1295,16 @@ class MediaPlayerApp(tk.Tk):
|
|||||||
self._save_settings()
|
self._save_settings()
|
||||||
self.status_var.set(f"快进步长已设为 {value} 秒(已保存)")
|
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):
|
def _on_seek_step_return(self, _event):
|
||||||
self._commit_seek_step()
|
self._commit_seek_step()
|
||||||
self.focus_set()
|
self.focus_set()
|
||||||
|
|||||||
Reference in New Issue
Block a user