Ich versuche mit PyQt5 einen Punkt um den Bildschirm zu bewegen. Ich möchte, dass sich der Punkt immer bewegt. Ich bin mir nicht sicher, wo ich den Code platzieren soll, um seine Geschwindigkeit zu ändern. Gibt es eine Methode, deren Code ständig ausgeführt wird?Wie verschiebe ich einen Punkt über den Bildschirm in PyQt5?
Hier ist mein Code:
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_())
Was ich tun möchte, ist target_x_pos
machen ständig erhöht, und zwar unabhängig davon, ob die Maus oder angeklickt bewegt. Wie mache ich das?
Ich kann keine Schleife implementieren, weil dann nichts anderes reagieren würde. Kommt das Threading ins Spiel?
Dies funktioniert, aber es gibt eine merkliche Verzögerung in der Bewegung des Punktes, wenn ich die Maus bewege. Wie kann ich es mit einer mehr oder weniger konstanten Geschwindigkeit bewegen? Denkst du, dass mouseMoveEvent zu oft ausgeführt wird und zu viele Ressourcen beansprucht? – Kos
@Kos In meinem Fall habe ich dieses Problem nicht. – eyllanesc
Seltsam. Laufen Sie auf einem Mac? – Kos