Как обновить Kivy ProgressBar для функции, которая содержит много цикла (для) - PullRequest
0 голосов
/ 05 октября 2018

я создаю приложение 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()

есть ли решение / способ сделать то же самое или нет, когда у нас много циклов.

Большое спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...