Dein Code ist schon eine Herausforderung
zu Problem 2.
füge
toggled_text = ''
vor dem while True: ein und innerhalb z.B.
elif window=="10502":
machst Du dann
toggled_text = "WOAS IS?" if toggled_text == "Music" else "Music"
und anstelle von "Music" gibst Du bei draw.text dann die Variable toggled_text an.
Damit würde mit jedem Durchlauf zwischen Music und WOAS IS? gewechselt.
Generell würde ich Dir empfehlen eine Funktion zu definieren, welche das aktuelle Bild erstellt und anzeigt.
Etwa wie
def create_and_display_image(top_text='test', bottom_text='test', top_font=font36, bottom_font=font28):
draw.rectangle((0,0,width,height), outline=0, fill=0)
w,h = draw.textsize(top_text, font=top_font)
mid = (width-w)/2
draw.text((mid, top), top_text, font=top_font, fill=255)
w,h = draw.textsize(bottom_text, font=bottom_font)
mid = (width-w)/2
draw.text((mid, padding), bottom_text, font=bottom_font, fill=255)
disp.image(image)
aufgerufen ohne Parameter werden die Standardwerte genommen. Ansonsten die die übergeben werden also in etwa
oder
elif PlayerisEpisodes==True:
create_and_display_image("S:{} /E:{}".format(season, episode), videotime)
oder
Wenn Du aber den top_font nicht übergeben willst, den bottom_font aber schon mußt du diesen benennen also
create_and_display_image("System", "Settings", bottom_font=font32)
damit python auch richtig zuordnen kann, sprich weiß, dass der übergebene dritte Parameter eigentlich der vierte ist.
Damit wären 90% deines redundanten Codes nicht mehr nötig.
Zu Problem 1,
ich habe mal in die Python Bibliothek von Adafruit geschaut und es sieht nicht aus als ob es eine interne Routine gibt, welche das
ein- und auslaufen eines Textes bewirkt. Das heisst Du hast aus meiner Sicht folgende Möglichkeiten.
1) Du könntest einen Thread erstellen, der diese Animation auf Anforderung erfüllt, nicht ganz trivial
2) Du könntest innerhalb deines while loops einen weiteren loop bauen der die Animation macht, durch den Timeout würde das aber wahrscheinlich unschön
3) Du überdenkst dein Konzept und versuchst das geforderte über Callbacks zu lösen (in wie weit alles über den Mechanismus zu lösen ist, vermag ich nicht zu sagen, hab ich nicht recherchiert.)
Deinen while True würde ich gegen einen waitForAbort tauschen, damit Kodi auch die Möglichkeit hat sauber zu stoppen.
Die pass statements sind überflüssig wenn Du Code im Block hast genauso wie die Funktionen innerhalb der Blöcke wenn sie
eh nur im Block einmalig .laufen
Die Doku zur Kodi API https://codedocs.xyz/xbmc/xbmc/group__python.html
Und fürs nächste mal, sei mir bitte nicht böse, den Code säubern, sprich ungenutztes entweder löschen und kommentieren,
damit machst Du es anderen leichter sich durchzuwurschteln.
So, das soll es für das erste gewesen sein.
Cheers
Claudia