time.sleep () не работает должным образом с асинхронной функцией - PullRequest
0 голосов
/ 21 апреля 2019

Я делаю графический интерфейс с использованием KIVY.Он извлекает «статическое изображение карты» (png) и «Обратную геокодированную строку» (json) из URL.Для этого я использую встроенную библиотеку kivy asinchronous urlrequest .Моя программа выбирает (широта, долгота) из файла .csv и показывает изображение и детали адреса на экране. Также некоторые внутренние операции выполняются на основе данных json (dict) (например: сколько слов в адресе ..)).Есть кнопка ' next ', при нажатии на которую выбирается и проецируется следующая (широта, долгота).Теперь я добавил кнопку « автоматизировать », которая будет перебирать (широта, долгота) и вызывать точно такие же функции, когда ' next 'нажимается вручную, но после выполнения экран зависает, иногда не отвечает, если при выполнении каким-либо образом данные json не получают время для обновления.

Я использую time.sleep () .Но, похоже, это бесполезно.Я искал это, я не знаю, потому что это «буфер» или нет.Сильфон является частью кода:

def automate(self):
    for i in range(5):)
        self.next('NaN')
        time.sleep(6)

1 Ответ

1 голос
/ 21 апреля 2019

Вы должны использовать объект Clock вместо time.sleep():

def automate(self):
    Clock.schedule_interval(self.automate_next, 6)

def automate_next(self, dt):
    self.next('NaN')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...