Seite 1 von 1

List-Item aus einem List-Item aufrufen

Verfasst: Donnerstag 31. März 2016, 15:38
von sveni_lee
Ich habe ein Problem,

ich möchte ein ListItem aus einem ListItem aufrufen:

Code: Alles auswählen

SPWatchtypes = {'international': 1, 'german': 5, 'classics': 3, 'soap': 2}
SPTranslations = {'international': __LS__(30120), 'german': __LS__(30121), 'classics': __LS__(30122), 'soap': __LS__(30123)}

Code: Alles auswählen

if methode=='show_select_dialog':
    writeLog('Methode: show select dialog', level=xbmc.LOGDEBUG)
    dialog = xbmcgui.Dialog()
    cats = [__LS__(30120), __LS__(30121), __LS__(30122), __LS__(30123), __LS__(30116)]
    ret = dialog.select(__LS__(30011), cats)
wenn nun in der GUI eine category gewäht wird soll der def Aufrug wie folg erfolgen:

Code: Alles auswählen

scrapeWLPage(SPWatchtypes[ret])
bei Auswahl von international also __LS__(30120) soll
(SPWatchtypes[ret]) eigendlich 1 ist er aber nicht so... ich bekomme immer eine Fehlermeldung
Error Type: <type 'exceptions.KeyError'>
Error Contents: (0,)
Traceback (most recent call last):
File "G:\KODI-Krypton\portable_data\addons\plugin.program.serienplaner\default.py", line 626, in <module>
scrapeWLPage(SPWatchtypes[ret])
KeyError: (0,)

Re: List-Item aus einem List-Item aufrufen

Verfasst: Donnerstag 31. März 2016, 16:02
von BlackJack
@sveni_lee: Nun, ganz offensichtlich bekommst Du von dem `select()`-Aufruf keine Zahl sondern ein Tupel mit einer Zahl zurück. Und dazu kommt auch noch das `SPWatchtypes` als Schlüssel noch nicht einmal mit der *im* Tupel etwas anfangen könnte, weil dort Zeichenketten auf andere Werte abgebildet werden.

Re: List-Item aus einem List-Item aufrufen

Verfasst: Donnerstag 31. März 2016, 16:48
von sveni_lee
okay, würde es denn helfen, wenn ich der SPTranslation dem __LS__(30120) eine 1 zuordnen würde..
also

Code: Alles auswählen

SPTranslations = {1: __LS__(30120), 5: __LS__(30121),3: __LS__(30122), 2: __LS__(30123)}
und dann

Code: Alles auswählen

scrapeWLPage(SPTranslation[ret])
als Aufruf?

Re: List-Item aus einem List-Item aufrufen

Verfasst: Donnerstag 31. März 2016, 17:08
von BlackJack
@sveni_lee: Was wäre denn `ret` in dem Fall? Weiterhin ein Tupel mit einer 0 drin? Was für einen Wert sollte das denn Deiner Meinung nach liefern?

Re: List-Item aus einem List-Item aufrufen

Verfasst: Donnerstag 31. März 2016, 17:16
von sveni_lee
hm, dann verstehe ich das nicht ganz...

Ich dachte 'SPTranslation' wäre dann der Schlüssel und würde dem Wert __LS__(30120) den Wert 1 zuweisen...

Re: List-Item aus einem List-Item aufrufen

Verfasst: Donnerstag 31. März 2016, 17:26
von BlackJack
@sveni_lee: `SPTranslation` ist kein Schlüssel sondern ein Wörterbuch. Und in Wörterbüchern werden Schlüssel auf Werte abgebildet.

Re: List-Item aus einem List-Item aufrufen

Verfasst: Donnerstag 31. März 2016, 17:44
von sveni_lee
@BlackJack:

Gut wenn SPTranslation das Wörterbuch ist dann müsste doch __LS__(30120) der schlüssel für den Wert 1 sein oder nicht...
und ret wird der Wert __LS__(30120) zugeordnet oder auch nicht?

Re: List-Item aus einem List-Item aufrufen

Verfasst: Donnerstag 31. März 2016, 20:04
von BlackJack
@sveni_lee: Wie wär's wenn Du einfach mal ein Grundlagentutorial durcharbeitest‽

Re: List-Item aus einem List-Item aufrufen

Verfasst: Donnerstag 31. März 2016, 21:55
von sveni_lee
Ja gut aber das hilft mir ja nicht wirklich weiter...

SPTranslations ist ein Dictionary...

Code: Alles auswählen

SPTranslations = {__LS__(30120) : 'international',  __LS__(30121) : 'german',  __LS__(30122) : 'classics',  __LS__(30123) : 'soap'}
__LS__(30120) ist der Schlüssel
und 'international' ist der Wert, den ich haben möchte
also: print SPTranslations[__LS__(30120)]
sollte international liefern...

soweit habe ich das verstanden...

Das Problem ist aber das der schlüssel ansich ja ein Wert aus einer Liste ist denn __LS__(30120) ist ja bestandteil der Liste

Code: Alles auswählen

cats = [__LS__(30120), __LS__(30121), __LS__(30122), __LS__(30123), __LS__(30116)]
der durch

Code: Alles auswählen

ret = dialog.select(__LS__(30011), cats)
der Wert des Schlüssel __LS__(30120) aus dem Dictionary SPTranslations (international) muß als wert and scrapeWLPage(...) übergeben werden,
weil er dort wieder als Schlüssel dient um den Wert aus dem Dictionary SPWatchtypes auszugeben

Code: Alles auswählen

SPWatchtypes = {'international': 1, 'german': 5, 'classics': 3, 'soap': 2}
Leider wird eine solche konstelation nicht in irgendwelchen Dokumentationen beschrieben... Oder habe ich einen Fehler in mein Ablauf?

Re: List-Item aus einem List-Item aufrufen

Verfasst: Freitag 1. April 2016, 20:33
von BlackJack
@sveni_lee: Ich weiss nicht so recht was Du mit Konstellation meinst? In ”irgendwelchen” Dokumentationen werden üblicherweise die einzelnen Datentypen und die Operationen darauf erklärt. Daraus dann ein Programm zusammenzusetzen, welches Dein Problem löst, ist Deine Aufgabe als Programmierer. Was Du genau mit den Objekten anstellen möchtest kann ja kein Autor von irgendwelcher Dokumentation wissen. Du bekommst die Bausteine an die Hand und musst wissen wie Dein Problem aussieht, was Du hast, was Du willst, und dann musst Du einen Weg vom einen zum anderen mit Hilfe der Bausteine entwickeln.

Re: List-Item aus einem List-Item aufrufen

Verfasst: Freitag 1. April 2016, 23:10
von sveni_lee
Die Lösung war mit vielprobieren gar nicht so schwer...
ich musste ein neues dictionary anlegen das den __LS(...) die entsprechende category zuordnet...

Code: Alles auswählen

SPTranslations1 = {__LS__(30120): 'international', __LS__(30121): 'german', __LS__(30122): 'classics', __LS__(30123): 'soap'}
und der Aufruf:

Code: Alles auswählen

scrapeWLPage(SPTranslations1[cats[ret]])