я создаю приложение kivy, и я хочу обновить индикатор выполнения в функции, которая содержит около 3 циклов «For».моя программа работает нормально, но индикатор выполнения начинает обновляться только тогда, когда программа обрабатывает последний цикл (третий).
вот мой класс:
class Myapp():
def __init__(self, *args, **kwargs):
super(Myapp, self).__init__(*args, **kwargs)
self.update_bar_trigger = Clock.create_trigger(self.MyFunction)
def MyFunction() :
#some code here
for folder in range(len(list_folders)):
#some code here
list_files = os.listdir(folder)
for file in list_files : # list_file is a list
# here i read about 20 excel files that exist in the folder
# i do some data processing here
print("done")
for dictionary in list_dictionary :
# here i manipulate lot of dictionaries
print("done")
у меня было то же самоепроблема, когда у меня был один цикл, и я спросил людей здесь, и они рекомендовали мне использовать Clock.create_trigger
.это сработало очень хорошо для меня.Вот пример:
def __init__(self, *args, **kwargs):
super(Myapp, self).__init__(*args, **kwargs)
self.update_bar_trigger = Clock.create_trigger(self.update_bar)
def clicked(self):
self.i = 0
self.update_bar_trigger()
def update_bar(self, dt):
if self.i <= 10000: # for me, here it was "for i in range(10001):"
self.ids.pb.value += self.i
self.i += 1
self.update_bar_trigger()
есть ли решение / способ сделать то же самое или нет, когда у нас много циклов.
Большое спасибо