Я пытаюсь сделать движение точки вокруг экрана с помощью PyQt5. Я хочу, чтобы точка всегда двигалась. Я не уверен, куда поместить код, чтобы изменить его скорость. Есть ли какой-нибудь метод, код которого выполняется постоянно?Как переместить точку на экране в PyQt5?
Вот мой код:
import sys
from PyQt5.QtWidgets import (QApplication, QLabel, QWidget)
from PyQt5.QtGui import QPainter, QColor, QPen
from PyQt5.QtCore import Qt
class MouseTracker(QWidget):
distance_from_target = 0
mouse_x_pos = 0
mouse_y_pos = 0
target_x_pos = 500
target_y_pos = 250
def __init__(self):
super().__init__()
self.initUI()
self.setMouseTracking(True)
def initUI(self):
self.setGeometry(200, 200, 1000, 500)
self.setWindowTitle('Mouse Tracker')
self.label = QLabel(self)
self.label.resize(500, 40)
self.show()
def mouseMoveEvent(self, event):
distance_from_target = round(((event.y() - self.target_y_pos)**2 + (event.x() - self.target_x_pos)**2)**0.5)
self.label.setText('Coordinates: (%d : %d)' % (event.x(), event.y()) + " Distance from target: " + str(distance_from_target))
self.mouse_x_pos = event.x()
self.mouse_y_pos = event.y()
self.update()
def mousePressEvent(self, event):
self.target_x_pos = event.x()
self.target_y_pos = event.y()
self.update()
def paintEvent(self, event):
q = QPainter()
q.begin(self)
q.drawLine(self.mouse_x_pos, self.mouse_y_pos, self.target_x_pos, self.target_y_pos)
app = QApplication(sys.argv)
ex = MouseTracker()
sys.exit(app.exec_())
То, что я хочу сделать, это target_x_pos
постоянно увеличивать, независимо от того, движется ли или щелкнуть мышью. Как мне это сделать?
Я не могу реализовать цикл, потому что тогда ничего другого не было бы отзывчивым. Это то, где происходит резьба?
Это работает, но есть заметное отставание в перемещении точки всякий раз, когда я перемещаю мышь. Как заставить его двигаться с большей или меньшей постоянной скоростью? Считаете ли вы, что mouseMoveEvent работает слишком часто и занимает слишком много ресурсов? – Kos
@Kos В моем случае у меня нет этой проблемы. – eyllanesc
Странно. Вы работаете на Mac? – Kos