Kodi 插件在 window.removeControl() 时崩溃

Kodi add-on crashing on window.removeControl()

我正在开发一个使用自定义覆盖的 Kodi 插件。它现在几乎完全可以工作,除了我每次开始播放视频时遇到的一个运行时错误,在视频中达到 5 秒后(“错误内容: window 中不存在控件”)。下面是 addon.py 的代码:

import xbmc, xbmcaddon, xbmcgui, os
ADDON = xbmcaddon.Addon()
addonpath = ADDON.getAddonInfo('path')

class OverlayBackground(object):
   def __init__(self):
      self.showing = False
      self.window = xbmcgui.Window()
      origin_x = 0
      origin_y = 0
      window_w = self.window.getWidth()
      window_h = self.window.getHeight()
      self._background = xbmcgui.ControlImage(origin_x, origin_y, window_w, window_h, os.path.join(addonpath,"resources","skins","default","media","background.png"))
   def show(self):
      self.showing=True
      self.window.addControl(self._background)
   def hide(self):
      self.showing=False
      self.window.removeControl(self._background)
   def _close(self):
      if self.showing:
         self.hide()
      else:
         pass
      try:
         self.window.clearProperties()
      except: pass

if (__name__ == '__main__'):
   monitor = xbmc.Monitor()
   while not monitor.abortRequested():
      if xbmc.Player().isPlaying():
         theOverlay = OverlayBackground()
         if(xbmc.Player().getTime() < 5):
            theOverlay.show()
         else:
            theOverlay.hide()
         xbmc.sleep(1000)

错误来自“self.window.removeControl(self._background)”,如 paste bin 中所述。这看起来很奇怪,因为我确定控件是在 运行 此命令之前添加的,所以我不确定是什么导致此命令使加载项崩溃。

我试着在 Kodi 论坛上寻求帮助,并被告知我需要获得我正在控制的玩家的 ID(并链接到 the documentation for Control),但我没有确定如何实现它,即使在广泛研究文档之后也是如此。

如果能对此做出任何澄清,我将不胜感激。提前致谢!

您需要检查叠加层是否已移除

   def show(self):
      if not self.showing:
          self.showing=True
          self.window.addControl(self._background)
   def hide(self):
      if self.showing:
          self.showing=False
          self.window.removeControl(self._background)