fix: bug修复 (#335)

This commit is contained in:
香草味的纳西妲
2025-03-13 13:11:45 +08:00
committed by GitHub
parent ff7f396f9d
commit 0ef913635d

View File

@@ -92,6 +92,7 @@ class P3PlayerApp:
self.is_paused = False
self.stop_event = threading.Event()
self.pause_event = threading.Event()
self.loop_playback = tk.BooleanVar(value=False) # 循环播放复选框的状态
# 创建界面组件
self.create_widgets()
@@ -114,6 +115,10 @@ class P3PlayerApp:
self.remove_button = tk.Button(self.checkbox_frame, text="移除文件", command=self.remove_files)
self.remove_button.pack(side=tk.LEFT, padx=5)
# 循环播放复选框
self.loop_checkbox = tk.Checkbutton(self.checkbox_frame, text="循环播放", variable=self.loop_playback)
self.loop_checkbox.pack(side=tk.LEFT, padx=5)
# 控制按钮
self.control_frame = tk.Frame(self.root)
self.control_frame.pack(pady=10)
@@ -130,9 +135,6 @@ class P3PlayerApp:
self.stop_button = tk.Button(self.control_frame, text="停止", command=self.stop)
self.stop_button.grid(row=0, column=3, padx=5)
self.next_button = tk.Button(self.control_frame, text="下一首", command=self.next)
self.next_button.grid(row=0, column=4, padx=5)
# 状态标签
self.status_label = tk.Label(self.root, text="未在播放", fg="blue")
self.status_label.pack(pady=10)
@@ -175,7 +177,7 @@ class P3PlayerApp:
self.update_status(f"正在播放:{os.path.basename(self.playlist[self.current_index])}", "green")
def play_audio(self):
while self.current_index < len(self.playlist):
while True:
if self.stop_event.is_set():
break
@@ -183,17 +185,30 @@ class P3PlayerApp:
time.sleep(0.1)
continue
# 检查当前索引是否有效
if self.current_index >= len(self.playlist):
if self.loop_playback.get(): # 如果勾选了循环播放
self.current_index = 0 # 回到第一首
else:
break # 否则停止播放
file = self.playlist[self.current_index]
self.playlist_listbox.selection_clear(0, tk.END)
self.playlist_listbox.selection_set(self.current_index)
self.playlist_listbox.activate(self.current_index)
self.update_status(f"正在播放:{os.path.basename(self.playlist[self.current_index])}", "green")
play_p3_file(file, self.stop_event, self.pause_event)
if self.stop_event.is_set():
break
if not self.loop_playback.get(): # 如果没有勾选循环播放
break # 播放完当前文件后停止
self.current_index += 1
if self.current_index >= len(self.playlist):
if self.loop_playback.get(): # 如果勾选了循环播放
self.current_index = 0 # 回到第一首
self.is_playing = False
self.is_paused = False
@@ -217,17 +232,6 @@ class P3PlayerApp:
self.pause_event.clear()
self.update_status("播放已停止", "red")
def next(self):
if self.is_playing or self.is_paused:
self.stop()
time.sleep(0.1) # 等待停止
self.current_index += 1
if self.current_index >= len(self.playlist):
self.current_index = 0
self.play()
def remove_files(self):
selected_indices = self.playlist_listbox.curselection()
if not selected_indices: