我正在尝试创建一个小部件,将鼠标从中心打印到标签的距离。这是我的代码:
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_center = 0
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_center = ((event.y() - 250) + (event.x() - 500))**0.5
self.label.setText('Coordinates: ( %d : %d )' % (event.x(), event.y()) + "Distance from center: " + str(round(distance_from_center)))
def drawPoints(self, qp, x, y):
qp.setPen(Qt.red)
qp.drawPoint(x, y)
app = QApplication(sys.argv)
ex = MouseTracker()
sys.exit(app.exec_())
这就是问题所在:
def mouseMoveEvent(self, event):
distance_from_center = ((event.y() - 250) + (event.x() - 500))**0.5
self.label.setText('Coordinates: ( %d : %d )' % (event.x(), event.y()) + "Distance from center: " + str(round(distance_from_center)))
如果我删除round
周围的distance_from_center
函数,它会打印一个值,但它并不漂亮。我怎样才能做到这一点?为什么我不能简单地围绕?
答案 0 :(得分:1)
如果要计算欧几里德距离,则必须更改:
((event.y() - 250) + (event.x() - 500))**0.5
到
((event.y() - 250)**2 + (event.x() - 500)**2)**0.5