首页 > 解决方案 > 如何修复“无法删除 Tcl 命令”错误?

问题描述

我正在尝试使用TKinterPyGame构建一个 MP3 播放器。我遇到的问题是,当我在播放歌曲时关闭程序时,有时会收到“无法删除 Tcl 命令”描述的错误。 有很多调用会为滑块状态、歌曲标题、播放时间和等待歌曲结束的状态 创建更新循环。 这是他们的代码:

after()

    def __cycle_update_slider_position(self):
        if not self.isSongPaused and str(self.gui.slider_song.cget("state")) == "normal":
            self.songMetadata.song_playtime_counter() # counts time + converts raw seconds to formatted time output
            self.gui.slider_song.config(value=self.songMetadata.songRawPlaytime)

        self.sliderUpdateFlag = self.gui.master.after(250, self.__cycle_update_slider_position)

    def __cycle_spin_song_full_title(self):
        if len(self.songFullTitle) > 25:
            self.songFullTitle = self.songFullTitle[-1] + self.songFullTitle[:-1]

            self.gui.songNameLabel.configure(text=self.songFullTitle)

            self.gui.master.after(1000, self.__cycle_spin_song_full_title)

    def __cycle_wait_for_song_to_end(self):
        for event in pygame.event.get():
            if event.type == self.SONG_END:
                self.__autoplay_next_song() # erases all song metadata
                self.select_current_index() # selects the next song in the listbox
                self.gui.master.after_cancel(self.isSongEndedFlag)
        self.isSongEndedFlag = self.gui.master.after(50, self.__cycle_wait_for_song_to_end)

我想,也许我应该after_cancel()在退出时调用所有这些“循环”,但我不确定这是否是正确的解决方案。

标签: pythontkinter

解决方案


推荐阅读