Окно прогресса

Вопросы связанные с работой ГИС Аксиома
Ответить
Аватара пользователя
Alex_Y
Сообщения: 33
Зарегистрирован: 26 янв 2021, 06:40

Окно прогресса

Сообщение Alex_Y » 01 фев 2024, 05: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
Аватара пользователя
Дмитрий
Сообщения: 62
Зарегистрирован: 04 июн 2019, 08:33

Re: Окно прогресса

Сообщение Дмитрий » 01 фев 2024, 07: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
Сообщения: 33
Зарегистрирован: 26 янв 2021, 06:40

Re: Окно прогресса

Сообщение Alex_Y » 01 фев 2024, 11:41

Спасибо, работает ;)
Ответить