我有一些与 some 相关联的 x 和 y 坐标,QGraphicItems
然后放入QGraphicView
. 我最近注意到,在选择具有 RubberBand 功能的项目时,我的点的方向不正确。
我有 4 个重叠的点,它们重叠在错误的位置,我做了一些调试,发现我的原点从左上角开始,Y+ 向下,X+ 向右。
我想要我的系统,这样 Y+ 会随着它的上升而变大。我已经截取了一个屏幕截图来显示当前代码的结果(我将在下面粘贴)并且我在点旁边放了数字。这些数字代表该位置有多少个点。另外,我已经设置了 X 和 Y 方向。
然后移动点旁边的数字来代表我想要实现的目标。连同我正在寻找的 X 和 Y 方向。
我还注意到它似乎正在标准化坐标。如果我能保留实际的 X 和 Y 位置,那将是最好的。
这是我目前拥有的照片
这就是我想要的
这是我当前的代码
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
import sys
from math import sqrt
class LogObject(QObject):
hovered = pyqtSignal()
notHovered = pyqtSignal()
class Point(QGraphicsRectItem):
def __init__(self, x, y, name):
super(Point, self).__init__(QRectF(0, 0, 30, 30))
self.setFlag(QGraphicsItem.ItemIsSelectable, True)
self.name = name
self.x = x
self.y = y
self.setBrush(QBrush(Qt.black))
self.setAcceptHoverEvents(True)
self.log = LogObject()
self.setPos(x, y)
def itemChange(self, change, value):
if change == self.ItemSelectedChange:
self.setBrush(QBrush(Qt.green) if value else QBrush(Qt.black))
return QGraphicsItem.itemChange(self, change, value)
def hoverEnterEvent(self, event):
self.setBrush(QColor("red"))
self.log.hovered.emit()
QGraphicsItem.hoverMoveEvent(self, event)
def hoverLeaveEvent(self, event):
self.setBrush(QColor("black"))
self.log.notHovered.emit()
QGraphicsItem.hoverMoveEvent(self, event)
def mousePressEvent(self, event):
print(self.name)
QGraphicsItem.mousePressEvent(self, event)
class Viewer(QGraphicsView):
photoClicked = pyqtSignal(QPoint)
rectChanged = pyqtSignal(QRect)
def __init__(self, parent):
super(Viewer, self).__init__(parent)
self.rubberBand = QRubberBand(QRubberBand.Rectangle, self)
self.setMouseTracking(True)
self.origin = QPoint()
self.changeRubberBand = False
self._zoom = 0
self._empty = True
self._scene = QGraphicsScene(self)
慕的地6264312
相关分类