2016-10-15 2 views
0

Я довольно новичок в классе python и на самом деле не использовал их, поэтому, пожалуйста, не стесняйтесь указывать любые другие ошибки, кроме одного Я указываю.Проблема с классом python в Kodi, попытка написать пользовательский интерфейс для замены общего меню Kodi с помощью PYXBMCT

То, что я пытаюсь достичь, это новый UI in Kodi с использованием модуля pyxbmct. Я посылаю через список вещей (до сих пор еще предстоит решить, как я собираюсь разобраться раскол на следующий процесс с режимами, но это следующая задача)

Мои списки являются такие:

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) 

Затем, очевидно, отправляется в Window_Menu_Class(), чтобы попытаться отобразить имя (имена) в списке, а также отобразить значок справа, но чередуясь в зависимости от того, где вы сосредоточены в Списке.

Код для 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) 

, но я получаю ошибку -

Файл «C: \ Users * \ AppData \ Roaming \ Коди \ Addons \ plugin.video.sanctuary \ Lib \ process.py», строка 74, в LIST_UPDATE если self.window_menu.getFocus() == self.nameList: RuntimeError: несуществующее управление 0

Если я хэширование вне if self.window_menu.getFocus() == self.nameList: то это работает, но это Безразлично изменить e в списке, когда вы переходите к следующему элементу, у меня есть рабочая версия, но все это сделано в одном .py-файле и вообще не нужно для класса, однако теперь я пытаюсь разделить код на другой .py файлы, которые мне нужны, чтобы создать класс, содержащий всю информацию и отправную точку. Надеюсь, это достаточно информации и ценят любые отзывы.

ответ

0

У вашей проблемы нет простого ответа, потому что вы делаете это неправильно как на уровне Python, так и на уровне PyXBMCt (я являюсь автором PyXBMCt, BTW).

Во-первых, я настоятельно рекомендую вам изучить классы Python: как они определены, как они инициализируются, как они используются.

Когда вы получите это в порядке, я настоятельно рекомендую прочитать документацию PyXBMCt, которая теперь размещена здесь: http://romanvm.github.io/script.module.pyxbmct/ Посмотрите примеры, включая примерный плагин, который показывает, как использовать PyXBMCt. Например, что это такое window_menu.placeControl(Background, -5, 0, 110, 51)? PyXBMCt не использует пиксели, он размещает элементы управления в сетке с строками и столбцами, и вам нужно сначала настроить сетку.

В любом случае, я рекомендую сначала начать работу с Python.

 Смежные вопросы

  • Нет связанных вопросов^_^