2016-10-15 2 views
0

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.

Antwort

0

Ihr Problem hat keine einfache Antwort, weil Sie es sowohl auf Python-Ebene als auch auf PyXBMCt-Ebene falsch machen (ich bin der Autor von PyXBMCt, BTW).

Zuerst empfehle ich Ihnen dringend, Python-Klassen zu lernen: wie sie definiert sind, wie sie initialisiert werden, wie sie verwendet werden.

Wenn Sie das in Ordnung bringen, dann empfehle ich dringend, PyXBMCT Dokumentation zu lesen, die jetzt hier gehostet wird: http://romanvm.github.io/script.module.pyxbmct/ Schauen Sie sich die Beispiele an, einschließlich des Beispiel-Plugins, die zeigen, wie man PyXBMCt benutzt. Zum Beispiel, was ist das window_menu.placeControl(Background, -5, 0, 110, 51)? PyXBMCt verwendet keine Pixel, es platziert Steuerelemente in einem Raster mit Zeilen und Spalten und Sie müssen das Raster zuerst einrichten.

Wie auch immer, ich empfehle zuerst mit Python Sachen zu beginnen.

Verwandte Themen