def itemChange(self, change, value): if change == QGraphicsItem.ItemPositionHasChanged: if value.x() < 0 or value.y() < 0: if value.x() < 0: x = 0 else: x = value.x() if value.y() < 0: y = 0 else: y = value.y() value = QPointF(x,y) self.setPos(value) return #this works! # do other work, or emit signal return QGraphicsPixmapItem.itemChange(self, change, value)
def itemChange(self, change, value): if change == self.ItemSelectedHasChanged: if self.isSelected(): self.setPixmap(self.selection_pixmap) else: self.setPixmap(self.pixmap) if change == self.ItemPositionHasChanged: x, y = self.pos().x(), self.pos().y() lon, lat = self.view.to_geographical_coordinates(x, y) lon, lat = round(lon, 4), round(lat, 4) self.longitude, self.latitude = lon, lat # when the node is created, the ItemPositionHasChanged is triggered: # we create the label if not hasattr(self, 'label'): self.label = self.view.scene.addSimpleText('test') self.label.setZValue(15) self.label.setPos(self.pos() + QPoint(-70, 50)) self.label.setText('({}, {})'.format(lon, lat)) return QGraphicsPixmapItem.itemChange(self, change, value)