Nach einem Klick auf die Schaltfläche soll die App eine sehr schwere Tabelle anzeigen, also möchte ich zuerst ein animiertes gif
anzeigen und dann die Tabelle anzeigen.Kivy: animiertes Gif zurückgeben und dann ein anderes def aufrufen
wait_image= Loading()
self.add_widget(wait_image)
Clock.schedule_once(lambda x: self.DisplayTable(self), 0)
Aber dies nur laden den ersten Frame des gif
animiert:
Wenn die Schaltfläche geklickt wird, wird ein erster def mit dieser genannt. Wenn ich die Clock.schedule
durch return self
ersetzen, dann sind die animierte GIF funktioniert, aber die DisplayTable
def nicht aufgerufen wird:
wait_image= Loading()
self.add_widget(wait_image)
return self
ich versucht, einen anderen def zu nennen, die sich selbst zurück, und fahren Sie dann mit th DisplayTable
aber auch doesn ‚t Arbeit (das GIF ist nicht animiert, aber die Tabelle wird angezeigt):
Loading_image(self)
Clock.schedule_once(lambda x: self.DisplayTable(self), 0)
mit:
def Loading_image(self):
wait_image= Loading()
self.add_widget(wait_image)
return self
Wie kann ich also mit einem einfachen Klick ein animiertes gif aufrufen und anzeigen und dann die DisplayTable def aufrufen?
Hier ist die Builder
und die Loading
Klasse:
Builder.load_string('''
<Loading>
source : 'loading.zip'
anim_delay : 0.02
allow_stretch : True
keep_ratio : True
keep_data : True
''')
class Loading(AsyncImage):
pass
Der Code ist here
Dank Yoav verwenden. Ich konnte mit deinem Plugging das animierte gif bekommen, aber es läuft nicht reibungslos. Der Tisch braucht ungefähr 15 Sekunden, um erstellt zu werden: Das GIF wird für ungefähr 2 Sekunden animiert, dann bleibt es für ungefähr 8 Sekunden hängen und dann bewegt es sich langsam für die 2 Sekunden und dann bleibt es ein anderes Mal für die letzten 3 Sekunden stecken. Während der 15 Sekunden erstellt mein Code ein BoxLayout mit vielen Zeilen, die jeweils mehrere scrollbare Labels enthalten. Das ganze BoxLayout ist selbst scrollbar. Danach füge ich das BoxLayout sofort zur App hinzu, so dass ich nicht verstehe, warum die .gif-Datei die meiste Zeit stecken bleibt. – Enora
Ich werde schwer sein, ohne in Code zu helfen, hast du versucht, die ** Ausbeute ** an mehr Orten zu setzen? (vielleicht für jede Zelle, die Ihr Gebäude?) –
Ja, das ist besser, aber jetzt geht das .gif manchmal zurück und auch die vielen Erträge verlangsamen wirklich die Programme (mehr als 3 Minuten im Vergleich zu 15 Sekunden vorher). Ich habe den Code auf https://github.com/EnoraNedelec/FoldersManager gestellt. Der relevante Teil sind '## 3' '## 5' und' # anim_gif' in FoldersManager.py – Enora