zu ersetzen Ich bin ziemlich neu in Python-Klassen und habe nicht wirklich viel verwendet, so zögern Sie nicht, auf andere Fehler außer dem einen hinweisen Ich weise darauf hin.Problem mit Python-Klasse in Kodi, versuchen, eine Benutzeroberfläche zu schreiben Kodi generisches Menü mit PYXBMCT
Was ich versuche zu erreichen, ist eine neue UI in Kodi
mit dem pyxbmct
Modul. Ich bin die Dinge durch eine Liste zu senden (noch noch herauszufinden, wie ich werde die Spaltung zum nächsten Prozess mit dem Modi sortieren, aber das ist die nächste Aufgabe)
Meine Listen sind als solche:
List = [['[COLOR darkgoldenrod][I]Search[/I][/COLOR]','',904,'http://icons.iconarchive.com/icons/icontexto/search/256/search-red-dark-icon.png','','',''],
['[COLOR darkgoldenrod][I]Menu Test[/I][/COLOR]','',905,'http://icons.iconarchive.com/icons/icontexto/search/256/search-red-dark-icon.png','','','']]
process.Window_Menu_Class(List)
Dann offensichtlich durch die Window_Menu_Class() gesendet werden, um zu versuchen, den Namen in einer Liste anzuzeigen und auch ein Symbol auf der rechten Seite angezeigt, aber abwechselnd je nachdem, wo Sie in der Liste fokussiert sind.
-Code für Window_Menu_Class: -
import pyxbmct
List = []
class Window_Menu_Class():
fanart = 'http://www.wall321.com/thumbnails/detail/20121108/creepy%20video%20games%20castles%20diablo%20tristram%20creep%20diablo%20iii%20sanctuary%201920x1080%20wallpaper_www.wall321.com_92.jpg'
iconimage = ICON
power = 'http://herovision.x10host.com/fb_replays/power.png'
power_focus = 'http://herovision.x10host.com/fb_replays/power_focus.png'
text = '0xffffffff'
window_menu = pyxbmct.AddonDialogWindow('')
Background=pyxbmct.Image(fanart)
Icon=pyxbmct.Image('', aspectRatio=2)
button = pyxbmct.Button('', noFocusTexture=power,focusTexture=power_focus)
window_menu.setGeometry(1250, 650, 100, 50)
nameList = pyxbmct.addonwindow.List(_space=11,_itemTextYOffset=0,textColor=text)
window_menu.connect(button, window_menu.close)
window_menu.connect(pyxbmct.ACTION_NAV_BACK, window_menu.close)
window_menu.placeControl(Background, -5, 0, 110, 51)
window_menu.placeControl(nameList, 65, 1, 50, 20)
window_menu.placeControl(Icon, 30, 30, 60, 18)
name_list = []; url_list = []; mode_list = []; iconimage_list = []; fanart_list = []; desc_list = []; extra_list = []
def __init__(self,List):
self.Window_Menu(List)
def Window_Menu(self,List):
for item in List:
name = item[0]
url = item[1]
mode = item[2]
iconimage = item[3]
fanart = item[4]
desc = item[5]
extra = item[6]
if not name in self.name_list:
self.nameList.addItem(name);self.name_list.append(name);self.url_list.append(url);self.mode_list.append(mode);self.iconimage_list.append(iconimage);self.fanart_list.append(fanart);self.desc_list.append(desc);self.extra_list.append(extra)
self.create_window(name,url,mode,iconimage,fanart,desc,extra)
self.window_menu.doModal()
def create_window(self,name,url,mode,iconimage,fanart,desc,extra):
self.window_menu.setFocus(self.nameList)
self.window_menu.connectEventList(
[pyxbmct.ACTION_MOVE_DOWN,
pyxbmct.ACTION_MOVE_UP,
pyxbmct.ACTION_MOUSE_MOVE],
self.LIST_UPDATE(name,url,mode,iconimage,fanart,desc,extra))
def LIST_UPDATE(self,name,url,mode,iconimage,fanart,desc,extra):
if self.window_menu.getFocus() == self.nameList:
pos=self.nameList.getSelectedPosition()
Iconimg=self.iconimage_list[pos]
Fanart =self.fanart_list[pos]
self.Icon.setImage(Iconimg)
self.Background.setImage(Fanart)
aber ich erhalte den Fehler -
Datei „C: \ Benutzer * \ AppData \ Roaming \ Kodi \ addons \ plugin.video.sanctuary \ lib \ process.py“, Linie 74, in LIST_UPDATE wenn self.window_menu.getFocus() == self.nameList: Runtime: Nicht-Existierende Steuerung 0
wenn ich die if self.window_menu.getFocus() == self.nameList:
hash dann funktioniert es aber, es doesn nicht ändern Das Bild in der Liste, wenn Sie mit dem nächsten Element fortfahren, habe ich eine funktionierende Version, aber es wurde alles in einer .py-Datei gemacht und keine Notwendigkeit für die Klasse, aber jetzt versuche ich, den Code in andere .py zu trennen Dateien Ich musste eine Klasse erstellen, die alle Informationen enthielt und einen Startpunkt gab. Hoffe, das ist genug Informationen und freuen uns über jede Rückmeldung.