Python Kivy进度条值更新,但进度条不更新
我的kivy应用程序中有一个ProgressBar。我相信我需要使用Python Kivy进度条值更新,但进度条不更新,python,kivy,kivy-language,Python,Kivy,Kivy Language,我的kivy应用程序中有一个ProgressBar。我相信我需要使用Clock.create_trigger来确保进度条从循环内部更新 我已经尝试从和为我的解决方案调整解决方案,但是,直到最后,该栏仍然没有更新 以下代码是用于再现性目的的淡化版本 ProgressBar类 from kivy.clock import Clock from kivy.uix.progressbar import ProgressBar class MyProgressBar(ProgressBar):
Clock.create_trigger
来确保进度条从循环内部更新
我已经尝试从和为我的解决方案调整解决方案,但是,直到最后,该栏仍然没有更新
以下代码是用于再现性目的的淡化版本
ProgressBar类
from kivy.clock import Clock
from kivy.uix.progressbar import ProgressBar
class MyProgressBar(ProgressBar):
def __init__(self, *args, **kwargs):
super(MyProgressBar, self).__init__(*args, **kwargs)
# self.update_bar_trigger = Clock.create_trigger(self.update_bar)
self.update_bar_trigger = Clock.create_trigger(lambda dt: self.update_bar(), 1)
def update_bar(self, step):
if self.value <= 100:
self.value += step
self.update_bar_trigger()
KV文件
<Main_app>:
loading_pb: load_pb
GridLayout:
rows: 2
MyProgressBar:
id: load_pb
value: 0
min: 0
max: 100
Button:
text: 'Start Progress Bar'
on_press:
root.dummy()
问题
进度条的值似乎确实如预期的那样递增,但实际的进度条直到循环结束时才一次发生变化
相关的
Clock.schedule\u interval
和/或Clock.schedule\u一次
来安排循环的每个迭代。它们将函数调用插入kivy自己的eventloop,并避免阻塞该循环
<Main_app>:
loading_pb: load_pb
GridLayout:
rows: 2
MyProgressBar:
id: load_pb
value: 0
min: 0
max: 100
Button:
text: 'Start Progress Bar'
on_press:
root.dummy()
10.0
20.0
30.0
40.0
50.0
60.0
70.0
80.0
90.0
100.0
for i in range(10):
time.sleep(2)
self.loading_pb.update_bar(pb_increment)
print(self.loading_pb.value)