python - 如何修复“无法删除 Tcl 命令”错误?
问题描述
我正在尝试使用TKinter和PyGame构建一个 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()
在退出时调用所有这些“循环”,但我不确定这是否是正确的解决方案。
解决方案
推荐阅读
- batch-file - 如何使用 shell 脚本隐藏地运行批处理文件?
- php - 出乎意料的结束。找不到错在哪里
- javascript - 我如何关注下一个元素
- c - 为什么即使我正确使用了浮点数据类型和说明符,浮点值也给了我 0 值
- php - 从 SwiftMailer 准备的 SMTP 数据
- ruby-on-rails - Nokogiri 没有在 CSS 选择器中选择直接后代链接标签
- javascript - 取消订阅多个 Firestore 快照 VueJS
- ruby-on-rails - 如何更新rails 6中的多条记录
- sql - 将多行数据连接到 1 列,但基于两个主键对其进行分组
- gitlab - 此项目计划删除,但失败并显示以下消息:无法打开 TCP 连接到
:5000