Правильный способ реализовать загрузку всплывающих окон в приложении KIVY - PullRequest
0 голосов
/ 09 мая 2019

У меня есть приложение kivy, в котором при нажатии кнопки оно начинает обмениваться данными с сервером и на основе полученной информации создает и заполняет экран виджетами.Некоторые действия являются почти мгновенными, некоторые занимают значительное время в секундах.Я хочу реализовать всплывающее окно загрузки, которое отображается во время загрузки экрана.Я также хотел бы сделать это так, чтобы, когда загрузка занимает меньше времени, чем какой-либо настроенный период времени, давайте назовем это MIN_TIME, всплывающее окно не будет отображаться вообще.Более того, если время загрузки превышает MIN_TIME, я хочу показать всплывающее окно загрузки, по крайней мере, в какое-то другое настроенное время, назовем его TIME_INT.Оба эти условия запрещают показ всплывающего окна и его немедленное закрытие, если загрузка выполняется слишком быстро.

В общем:

  • Если время загрузки
  • Если MIN_TIME <время загрузки <MIN_TIME + TIME_INT: показать всплывающее окно загрузки после MIN_TIME секунд в течение секунд TIME_INT </li>
  • Если время загрузки> MIN_TIME + TIME_INT: показать всплывающее окно загрузки после MIN_TIME секунди закройте его, как только загрузка завершится.

Я пробовал разные подходы, но ничего не работает, как я хочу.Я подозреваю, что мне нужно многопоточность или многопроцессорность, чтобы сделать это.Если я правильно понимаю, загрузка должна выполняться в главном потоке, потому что я обновляю элементы графического интерфейса, но отображение всплывающего окна также выполняется в главном потоке, и оно не может отображать всплывающее окно, пока оно обрабатывает некоторые интенсивные действия.Можно ли сделать это так, как я хочу?

...