Ich bin neu auf Pyqt und ich versuche, eine UI zu erstellen, die einen Kreis (mit QPainter) auf ein Bild (QLabel) drucken, wenn wir die Pixelposition angeben. Zum Testen verwende ich ein Mausverfolgungsereignis, aber ich vermute, dass ich Probleme mit der Bild- oder Label-Größenänderung habe. Im Folgenden ein Bild von meiner Implementierung:Wie setze ichPixmap korrekt auf PyQt5?
Ergebnis:
Werfen Sie einen Blick auf die Position des Zeigers und des Kreises. Das möchte ich lösen.
Im Folgenden finden Sie den Code zu sehen (ich bin mit PIL (um das Bild zu laden) und PyQt5):
...
self.image = Image.open("Images/Quart_top_View_draw.jpg")
self.MainWindow.TennisCourtImage.setMouseTracking(True)
self.MainWindow.TennisCourtImage.mouseMoveEvent = self.get_mouse_pos
def get_mouse_pos(self,event):
x = event.pos().x()
y = event.pos().y()
print("Position: ", x,y)
img = self.image
width, height = img.size
print("Image Size: ", width, height)
img = ImageQt(img)
pixmap_image = QtGui.QPixmap.fromImage(img)
self.painterInstance = QtGui.QPainter(pixmap_image)
self.painterInstance.setPen(QPen(Qt.red, 15, Qt.SolidLine))
self.painterInstance.drawEllipse(x,y,15,15)
self.painterInstance.end()
myScaledPixmap = pixmap_image.scaled(self.MainWindow.TennisCourtImage.size(), Qt.KeepAspectRatio)
self.MainWindow.TennisCourtImage.setPixmap(myScaledPixmap)
...
Kann mir jemand helfen, bitte?
Grüße,
Gabriel: D
Warum verwenden Sie PIL? – eyllanesc
Und was ist dein Problem?, Was willst du bekommen? – eyllanesc
PIL ist nicht notwendig. Ich könnte nur ändern, wo ich PIL für die Linie \t \t Pixmap_image = QtGui.QPixmap ("Bilder/Quart_top_View_draw.jpg") verwenden. Was ich brauche ist, den Kreis zu zeichnen, wo mein Zeiger ist. –