PyQt5: Задержка при рисовании
Программа реализует алгоритм закраски многоугольника. Мне необходимо, чтобы алгоритм работал с задержкой для демонстрации работы алгоритма.
Проблема в том, что рисую на Pixmap и вывод изображения происходит после этого кода:
def fill(window):
pix = QPixmap()
paint = QPainter()
paint.begin(window.image)
"""
Тут сам алгоритм
"""
pix.convertFromImage(window.image)
window.scene.addPixmap(pix)
Есть ли какой-то способ для задержки в этом случае?
Ответы (2 шт):
Автор решения: CatProgrammer
→ Ссылка
Возможно, тебе стоит использовать модуль time и его функцию sleep(). В параметрах указываешь секунды. Код задержки выглядит так:
import time
time.sleep(5)
Автор решения: Alexander Chernin
→ Ссылка
# создаем graphicsPixmap для дальнейшего обновления pixmap на сцене
graphicsPixmap = window.scene.addPixmap(QPixmap())
timer = QTimer()
timer.timeout.connect(drawPixmap)
# Запустить таймер с интервалом 1 сек
timer.start(1000)
# Метод будет вызываться раз в QTimer::interval() (у нас это 1 сек)
# и добавлять штрихи к картинке
def drawPixmap():
pix = QPixmap()
paint = QPainter()
paint.begin(window.image)
"""
Тут сам алгоритм промежуточной отрисовки на window.image
"""
# показать текущие изменения на рисунке
pix.convertFromImage(window.image)
# Обновляем картинку в сцене
graphicsPixmap.setPixmap(pix)