ボタンをクリックすると、アプリは非常に重いテーブルを表示するので、最初にアニメーションgif
を表示してからテーブルを表示します。Kivy:アニメーションGIFを返してから別のdefを呼び出す
ボタンをクリックすると、最初のDEFがこれを使って呼び出される:
wait_image= Loading()
self.add_widget(wait_image)
Clock.schedule_once(lambda x: self.DisplayTable(self), 0)
しかし、これが唯一のアニメーションgif
の最初のフレームをロードします。
wait_image= Loading()
self.add_widget(wait_image)
return self
私は自己を返します別のDEFを呼び出し、その後、DisplayTable
目を続行しようとしたが、これはまた、doesnの:私はClock.schedule
return self
で置き換える場合は、アニメーションGIFの作品が、DisplayTable
DEFが呼び出されません「トンの仕事(.GIFがアニメーションではなく、テーブルが表示されます):
Loading_image(self)
Clock.schedule_once(lambda x: self.DisplayTable(self), 0)
と:
def Loading_image(self):
wait_image= Loading()
self.add_widget(wait_image)
return self
どうすれば簡単なクリックで、アニメーションgifを呼び出して表示し、次にDisplayTableを呼び出すことができますか?ここで
はBuilder
あるとLoading
クラス:
Builder.load_string('''
<Loading>
source : 'loading.zip'
anim_delay : 0.02
allow_stretch : True
keep_ratio : True
keep_data : True
''')
class Loading(AsyncImage):
pass
コードがkivyoavを使用して...あなたのGIFを更新するためのイベントループの時間を聞かせする必要がhere
おかげヨアフを使用して、後にUIを更新することです。私はあなたのプラグインでアニメーションGIFを手に入れることができましたが、それはスムーズに実行されていません。テーブルの作成には約15秒かかります.GIFは約2秒間アニメーションされ、その後約8秒間停止してから2秒間ゆっくりと移動し、最後の3秒間別の時間が経過します。 15秒間に、私のコードは、それぞれ複数のスクロール可能なラベルを含む多くの行を持つBoxLayoutを構築しています。 BoxLayout全体がスクロール可能です。その後、BoxLayoutを一度にアプリケーションに追加するので、.gifがほとんどの時間を過ごす理由はわかりません。 – Enora
私はコードなしで手助けするのが難しいでしょう、より多くの場所に**収率**を入れようとしましたか? –
はい、これは優れていますが、現在は.gifが戻ってくることが多く、多くの利回りが実際にプログラムを遅くしています(15秒前と比較して3分以上)。私はコードをhttps://github.com/EnoraNedelec/FoldersManagerに置く。関連する部分はFoldersManager.pyの '## 3'' ## 5'と '#anim_gif'です – Enora