0 / 0 / 0
Регистрация: 04.12.2012
Сообщений: 18

PyQt QPainter (Нет анимации)

16.10.2014, 21:48. Показов 2807. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Собственно есть два массива (координаты по X и Y). Есть чекбокс, при нажатии на который должна запуститься анимация. Но все работает не так как задумано. При нажатии на чекбокс идет задержка (которая равна сумме sleep в циле), после которой отрисовывается только последняя точка.
Как можно реализовать анимацию, но без потоков и полигонов? Не нашел подобных примеров, нуждаюсь в вашей помощи.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
def paintEvent(self, event = None):
 
        paint = QtGui.QPainter(self)
        paint.setPen(QtGui.QPen(QtCore.Qt.red, 3))
        if self.ch1.isChecked():
                self.animation(paint)
 
def animation(self, paint):
        for i in range(10):
            paint.eraseRect(0, 0, 1000, 1000)
            paint.drawPoint(self.px[i], self.py[i])
            self.update()
            time.sleep(0.1)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.10.2014, 21:48
Ответы с готовыми решениями:

Разница между PyQT 5 и PyQT 6
Добрый день, форумчане. Прошел тут курс всеми вами любимого автора, познакомился с GUI TKinter, и по вашим советам решил освоить PyQT. ...

В режиме анимации нет ключей. Нет возможности добавить
Так же пустой нижний селектор(здесь он открыт, не у меня), который справа от кнопки автозаписи ключей. При попытке его открытия сообщение...

Нет анимации на кнопках
сделал кнопки UI все работало, прошел день кнопки просто не кликаются(нет анимации). Что делать ПМОГИТЕ!!!

10
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
17.10.2014, 08:28
Видимо, не успевает событие paint отработать.
Воспользуйтесь лучше стандартной анимацией - QVariantAnimation или QPropertyAnimation.
0
0 / 0 / 0
Регистрация: 04.12.2012
Сообщений: 18
17.10.2014, 09:10  [ТС]
dondublon, видел пример с QPropertyAnimation, но там анимировали item в который заносился стандартный элипс. А в моем случае это массив произовльных точек, причем массив значений X и отдельно массив Y-ов. Как анимировать такое?
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
17.10.2014, 09:15
Сделайте точки итемами.
Либо через QVariantAnimation, обработка на valueChanged. Сам такое не делал, только с property работал.
0
0 / 0 / 0
Регистрация: 04.12.2012
Сообщений: 18
17.10.2014, 09:24  [ТС]
Думаю оставить этот способ на крайний случай, т.к. далек от QPropetryAnomation и QVariantAnimation. Хочется через QPainter сделать. Но не понятно почему задержка идет сразу по всем итерациям, после которой выполняются все итерации, но уже без задержки.

Добавлено через 4 минуты
Вообще в дальнейшем планируется анимация одной фигуры в другую, где будут известный координаты точек этих двух фигур. ПО формуле сделаю двумерный массив с промежуточными точками. И по логике, с помощью цикла я буду выводить точки сначала на одной итерации, потом на следаюющей, пока фигура 1 не станет фигурой 2. Но как я описал, у меня не вышло анимировать даже просто точку в QPainter'e
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
17.10.2014, 09:26
Я предложил сделать цивильно. Не хотите - не надо.
QVariantAnimation, кстати, умеет и линии анимировать.
0
0 / 0 / 0
Регистрация: 04.12.2012
Сообщений: 18
17.10.2014, 13:23  [ТС]
А кривые безье я смогу анимировать с QVariantAnimation?
Просто для меня это бездонный океан, в который походу придется все же нырнуть
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
17.10.2014, 13:46
QVariantAnimation, по видимому, обеспечивает вызов события, которые иначе вам бы пришлось делать с таймером.
Что именно будет анимироваться - это вы описываете вручную. Максимум из сложных типов - это QLine(F).
0
0 / 0 / 0
Регистрация: 04.12.2012
Сообщений: 18
17.10.2014, 14:33  [ТС]
dondublon, вас не затруднит написать пример кода, в котором перемещаются точки массива с помощью QVariantAnimation?
Или посоветовать литературу, ссылки, где это хорошо освещается. Пока нашел только http://srinikom.github.io/pysi... ation.html
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
17.10.2014, 14:38
Нет, не делал такого.
0
0 / 0 / 0
Регистрация: 04.12.2012
Сообщений: 18
17.10.2014, 15:10  [ТС]
Вопрос еще актуальный, может есть кто-то, кто сталкивался с этим или просто знает как помочь?

Добавлено через 6 минут
Возможно кто-то предложит решение через QTimer, но у меня не вышло с его помощью вывести хоть что-то
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.10.2014, 15:10
Помогаю со студенческими работами здесь

Bootstrap 5, нет анимации карусели
Решил изучить бутстрап, выбор пал на 5 альфа. Сделал карусель, все работает, но нет анимации в ЯБ и Хроме. В Pale moon, к слову, анимация...

QGraphicsItemAnimation - нет ли утечек памяти при закрытие главного окна во время анимации?
Привет, ну вот создаю я анимацию элемента QGraphicsScene... (перенёс в одну кучу для наглядности) QGraphicsScene* m_pGS; ...

Алгоритмы.Анимации. Написать прогу для изображения анимации
нужно чтобы она двигалась во все стороны. вот эта фигура

Прерывание анимации прыжка и вызов анимации удара
Решил добавить в игру простеньких анимаций. Добавил анимацию прыжка и заготовку анимации атаки. Но анимация атаки проигрывается после...

Проигрывание анимации после анимации
Добрый день форумчане. Ищу уже пару дней информацию, нигде не смог зайти, пошел во все тяжкие - сюда пишу. Суть в чем - есть сцена, на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

Новые блоги и статьи
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru