Вопросы связанные с работой ГИС Аксиома
-
Alex_Y
- Пользователь
- Сообщения: 44
- Зарегистрирован: 26 янв 2021, 09:40
Сообщение
Alex_Y » 01 фев 2024, 08:40
Здравствуйте.
Пытаюсь сделать вывод окна прогресса как это описано на сайте. Процесс выполняется, а вот окно прогресса не выводит.
Подскажите, что не так?
Код:
Код: Выделить всё
def user_heavy_function(ph: AxipyProgressHandler, count: int):
# Вначале задаём верхнюю планку изменения прогресса
ph.set_max_progress(count)
for i in range(0, count):
if ph.is_canceled(): break
# Тут делаем длительные вычисления
print(i)
ph.add_progress(1)
return ph.progress()
def StartProccess(self) -> None:
spec = ProgressSpecification(description="Длительная операция", flags=ProgressGuiFlags.CANCELABLE)
times = 6
real_times = task_manager.run_and_get(spec, user_heavy_function, times)
# выводим колличество раз которое отработал цикл внутри
print(real_times)
Результат работы:
0
1
2
3
4
5
6.0
-
Дмитрий
- Администратор
- Сообщения: 100
- Зарегистрирован: 04 июн 2019, 11:33
Сообщение
Дмитрий » 01 фев 2024, 10:38
Здравствуйте!
Дело в том, что данная операция производится слишком быстро и нет необходимости в показе окна с прогрессом. Это ограничение задано в ядре и составляет 1-2 секунды.
Для теста попробуйте в своем коде сделать явную задержку и тогда окно будет показано.
Примерно так:
Код: Выделить всё
import time
def user_heavy_function(ph: AxipyProgressHandler, count: int):
# Вначале задаём верхнюю планку изменения прогресса
ph.set_max_progress(count)
for i in range(0, count):
if ph.is_canceled(): break
# Тут делаем длительные вычисления
print(i)
time.sleep(3)
ph.add_progress(1)
return ph.progress()
-
Alex_Y
- Пользователь
- Сообщения: 44
- Зарегистрирован: 26 янв 2021, 09:40
Сообщение
Alex_Y » 01 фев 2024, 14:41
Спасибо, работает
