我正在使用循环链表和Python(pygame)制作音乐播放器。我有删除功能,但显然它总是有问题。 被窃听的条件是:
此音乐播放器使用我们电脑目录中的 mp3 文件
def delete_current_song(self, playlist_box):
if not self.head:
return
current_song = self.get_current_song()
if self.head.next == self.head:
self.stop_current_song()
self.head = None
self.current = None
else:
self.stop_current_song()
temp = self.head
while temp.next != self.current:
temp = temp.next
temp.next = self.current.next
self.current = temp.next
self.master.after(10, self.update_playlist_box, playlist_box)
self.master.after(20, self.play_next_song)
if current_song:
self.master.after(30, self.play_current_song)
这里我把它放在循环链表类中:
def delete_song(self):
self.playlist.delete_current_song(self.playlist_box)
self.update_song_info_label()
还有音乐播放器类中的这个。
那么我该如何修复删除功能以免被窃听呢?
在
delete_current_song
中,在 else
块中,您必须确保在恰好是当前要删除的歌曲时更新 self.head
。否则 self.head
仍将引用已删除的歌曲。
所以改变这个:
temp.next = self.current.next
self.current = temp.next
对此:
temp.next = self.current.next
if self.head == self.current:
self.head = temp.next
self.current = temp.next