1
나는 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