Ich versuche in PyQt mit dem Graphics View Framework auf einem Raster zu zeichnen. Ich mein damit die Möglichkeit, Elemente nicht pixelgenau zu verschieben, sondern z. B. in 10px-Sprüngen.
Ich hatte bisher folgende Umsetzung:
Code: Alles auswählen
def mouseMoveEvent(self, event):
#save current (rasterized) mouse position // x
if (int(str(event.x())[-1]) < 5):
self.mPos[0] = (event.x() / 10) *10
else:
self.mPos[0] = (event.x() / 10 + 1) *10
#y
if (int(str(event.y())[-1]) < 5):
self.mPos[1] = (event.y() / 10) *10
else:
self.mPos[1] = (event.y() / 10 + 1) *10
Dann wird das Element, in dem Fall eine QLine, auf diese Position geupdatet.
Das Problem bei dieser Methode ist, dass wenn die Position aufgerundet wird, die Linie nicht vollständig aktualisiert wird, also nicht 10px länger wird, sondern nur ca. 1px. Erst wenn ich eine neue Linie zeichne, wird die Linie aktualisiert richtig gezeichnet.
Es gibt also zwei Möglichkeiten mir zu helfen Entweder ihr habt eine Idee, wie man diese Fehlfunktion(?) umgehen kann oder ihr habt zufällig eine andere Umsetzungsidee!
Für beides bin ich dankbar,
Qdeep