03
Окт
2022

Постепенное движение фигуры в ту точку холста, где пользователь кликает левой кнопкой мыши

Необходимо запрограммировать постепенное движение фигуры в точку холста, где пользователь кликает левой кнопкой мыши.
Координаты события хранятся в его атрибутах x и y (event.x , event.y).

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import sys
from PySide2.QtWidgets import QWidget, QApplication
from PySide2.QtCore import QPropertyAnimation, QPoint


class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.resize(500, 500)
        self.child = QWidget(self)
        self.child.setStyleSheet("background-color:green;border-radius:25%;")
        self.child.resize(50, 50)
        self.anim = QPropertyAnimation(self.child, b"pos")
        self.anim.setDuration(1500)
        self.anim.start()

    def mouseMoveEvent(self, event):
        self.anim.setEndValue(QPoint(event.x(), event.y()))


if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())

Проблема в том, что событие выполняется всего единожды, при первом нажатии в указанную точку.
Если затем попробовать кликнуть в другое место холста, то фигура не будет двигаться.

Как можно решить данную проблему?

Источник: https://ru.stackoverflow.com/questions/1453848/%D0%9F%D0%BE%D1%81%D1%82%D0%B5%D0%BF%D0%B5%D0%BD%D0%BD%D0%BE%D0%B5-%D0%B4%D0%B2%D0%B8%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5-%D1%84%D0%B8%D0%B3%D1%83%D1%80%D1%8B-%D0%B2-%D1%82%D1%83-%D1%82%D0%BE%D1%87%D0%BA%D1%83-%D1%85%D0%BE%D0%BB%D1%81%D1%82%D0%B0-%D0%B3%D0%B4%D0%B5-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C-%D0%BA%D0%BB%D0%B8%D0%BA%D0%B0%D0%B5%D1%82-%D0%BB%D0%B5%D0%B2%D0%BE%D0%B9-%D0%BA%D0%BD

Тебе может это понравится...

Добавить комментарий