Après avoir cliqué sur un bouton, l'application est censée afficher une table très lourde, donc je voudrais d'abord afficher une animation gif
puis afficher la table.Kivy: retour d'un gif animé puis appel d'un autre
Lorsque le bouton est cliqué, une première définition est appelée avec ceci:
wait_image= Loading()
self.add_widget(wait_image)
Clock.schedule_once(lambda x: self.DisplayTable(self), 0)
Mais cette charge seule la première image de la gif
animée. Si je remplace le Clock.schedule
par return self
, alors les œuvres de GIF animés, mais la définition DisplayTable
n'est pas appelé:
wait_image= Loading()
self.add_widget(wait_image)
return self
J'ai essayé d'appeler une autre définition qui renverra soi-même, puis procéder à e DisplayTable
mais aussi doesn « t travail (.gif n'est pas animé, mais la table est affichée):
Loading_image(self)
Clock.schedule_once(lambda x: self.DisplayTable(self), 0)
avec:
def Loading_image(self):
wait_image= Loading()
self.add_widget(wait_image)
return self
Alors, comment puis-je, avec un simple clic, appelé et afficher un gif animé, puis procéder à appeler le DisplayTable def?
Voici le Builder
et la Loading
classe:
Builder.load_string('''
<Loading>
source : 'loading.zip'
anim_delay : 0.02
allow_stretch : True
keep_ratio : True
keep_data : True
''')
class Loading(AsyncImage):
pass
Le code est here
Merci Yoav. Avec votre branchement, j'ai réussi à obtenir le gif animé, mais il ne fonctionne pas correctement. La table prend environ 15 secondes à créer: le gif est animé pendant environ 2 secondes, puis il reste coincé pendant environ 8 secondes, puis il se déplace lentement pendant les 2 secondes, puis il se coince une autre fois pendant les 3 dernières secondes. Pendant les 15 secondes, mon code construit un BoxLayout avec plusieurs lignes contenant chacune plusieurs étiquettes déroulantes. L'ensemble BoxLayout est lui-même scrollable. Après cela, j'ajoute le BoxLayout à la fois à l'application, donc je ne comprends pas pourquoi le .gif reste bloqué la plupart du temps. – Enora
Je vais être difficile à aider sans code, avez-vous essayé de mettre le ** rendement ** dans plus d'endroits? (peut-être pour chaque cellule que votre bâtiment?) –
Oui, c'est mieux, mais maintenant le .gif est parfois de retour et aussi les nombreux rendements ralentissent vraiment les programmes (plus de 3 min comparé à 15 sec avant). J'ai mis le code à https://github.com/EnoraNedelec/FoldersManager. La partie pertinente est '## 3'' ## 5' et '# anim_gif' dans le FoldersManager.py – Enora