尝试在标签中舍入变量时PyQt崩溃

时间:2017-01-18 02:43:14

标签: python qt python-3.x pyqt 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_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函数,它会打印一个值,但它并不漂亮。我怎样才能做到这一点?为什么我不能简单地围绕?

1 个答案:

答案 0 :(得分:1)

如果要计算欧几里德距离,则必须更改:

((event.y() - 250) + (event.x() - 500))**0.5 

((event.y() - 250)**2 + (event.x() - 500)**2)**0.5