diff --git a/doc/items.rst b/doc/items.rst index 1b771d9..bd25634 100644 --- a/doc/items.rst +++ b/doc/items.rst @@ -46,6 +46,14 @@ created rectangles, maybe even different kinds for different label types:: "head" : GreenRectItem, } +items.RectItem +============== + +Usage: + + * Can be moved by Left/Right/Up/Down keys. If Shift is pressed, step is increased. If Control is pressed, + width and height are modified instead of position. + Write your own visualization item ================================= diff --git a/sloth/items/items.py b/sloth/items/items.py index 2b2c468..30fe8f9 100644 --- a/sloth/items/items.py +++ b/sloth/items/items.py @@ -171,6 +171,23 @@ class RectItem(AnnotationGraphicsItem): self._updateRect(rect) self._updateText() + def keyPressEvent(self, event): + step = 1 + if event.modifiers() & Qt.ShiftModifier: + step = 5 + ds = { Qt.Key_Left: (-step, 0), + Qt.Key_Right: (step, 0), + Qt.Key_Up: (0, -step), + Qt.Key_Down: (0, step), + }.get(event.key(), None) + if ds is not None: + if event.modifiers() & Qt.ControlModifier: + rect = self.rect_.adjusted(*((0, 0) + ds)) + else: + rect = self.rect_.adjusted(*(ds + ds)) + self._updateRect(rect) + event.accept() + class PointItem(AnnotationGraphicsItem): def __init__(self, index, parent=None): AnnotationGraphicsItem.__init__(self, index, parent)