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)
Exemple #2
0
 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)