Mehrere returns in python Kivy ausführen?

regex9  15.09.2022, 17:17

Worauf verweist self.window? Welche Rolle nimmt dieses Widget im Programm ein?

Matthias123610 
Fragesteller
 16.09.2022, 18:41

Ich will mit

self.window = GridLayout()
self.window.cols = 1

self.window.add_widget(Image(source="py.png"))

Ein Bild als Hintergrund hinzufügen

2 Antworten

Jede kivy-Anwendung besteht aus nur einem Hauptfenster. Folglicherweise gibt es nur ein Root Widget, welches durch den Rückgabewert von build gesetzt wird.

Entweder also, du fügst dein GridLayout dem Main Widget zu oder du machst aus dem Hauptfenster ein GridLayout. Wobei sich in deinem Fall wohl eher ein BoxLayout eignen würde.

Ein komplettes Beispiel für ein Fenster mit Hintergrundbild findest du auf GeeksForGeeks: Python | Set Background Template in kivy.

return (self.window, MainWindowWidget())

Das ist in Python durchaus möglich, ein solches Ergebnis wird ein Tupel, genauer, ein Zweiertupel, genannt. Dein Problem ist aber wohl, dass an anderer Stelle deines Programms ein solches Zweiertupel nicht verarbeitet werden kann.

Wenn deine Funktion f heißt und ein solches Tupel zurückgibt, kannst du den Aufruf so schreiben:

(window, widget) = f( ) 

Dadurch erhältst du für jedes Element des Tupels einen Namen und kannst die Teilergebnisse getrennt weiterverarbeiten. Könnte sein, dass das in deiner Situation hilft, den Fehler an der Aufrufstelle der Funktion zu vermeiden.

Woher ich das weiß:Berufserfahrung – Berufstätigkeit als Software-Entwickler
Matthias123610 
Fragesteller
 16.09.2022, 18:53

Wie genau kann ich dass dann in den Code einbauen und was für eine Funktion meinst du? und was genau macht die Zeile

(window, widget) = f( ) 

?

0
BorisG2011  16.09.2022, 19:17
@Matthias123610

Wenn eine Funktion den Return-Befehl

return (self.window, MainWindowWidget())

ausführt, dann bewirkt diese Zeile, dass das erste Objekt des zurückgegebenen Tupels der Variablen window und das zweite Objekt der Variablen widget zugewiesen wird.

0