单击按钮后,应用程序应显示非常繁重的表格,因此我希望首先显示动画gif
,然后显示表格。
单击该按钮时,将调用第一个def:
wait_image= Loading()
self.add_widget(wait_image)
Clock.schedule_once(lambda x: self.DisplayTable(self), 0)
但这只会加载动画gif
的第一帧。如果我将Clock.schedule
替换为return self
,那么动画gif会起作用,但DisplayTable
def不会被调用:
wait_image= Loading()
self.add_widget(wait_image)
return self
我试图调用另一个将返回self的def,然后继续DisplayTable
,但这也不起作用(.gif不动画但显示表格):
Loading_image(self)
Clock.schedule_once(lambda x: self.DisplayTable(self), 0)
with:
def Loading_image(self):
wait_image= Loading()
self.add_widget(wait_image)
return self
那么我怎样才能通过简单的点击调用并显示动画gif,然后继续调用DisplayTable def?
以下是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
代码为here
答案 0 :(得分:1)
您需要让事件循环时间来更新您的gif ...使用 kivyoav 可以简化:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p class="showHide"><a class="showHideLink" id="1" href="#">Enter Comments</a></p>
<p class="1 comments">Comments:<br><textarea cols="50" rows="3"></textarea></p>
另一种选择是在不同的线程中进行繁重的工作,稍后只使用 Clock.schedule_once
更新UIfrom kivyoav.delayed import delayable
@delayable
def DisplayTable(self):
for i in ROWS:
yield 0.01 # after each row the gif will have time to update ...
for j in COLS:
pass # build your table cols ...