Bonjour,

C'est encore moi. J'ai trouvé ce petit bout de code fort intéressant qui permet de dessiner via le curseur de la souris. Le résultat que je souhaite obtenir c'est de pouvoir dessiner par dessus une photo afin d'y mettre des annotations.

Je galère un peu avec les différents widgets (QLabel, QWidget, QGraphicsView) qui permettent ou non d'afficher une photo.

Est-ce que peux directement intégrer une photo dans mon QGraphicsView ou est-ce que je dois passer par un autre widget ?


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
from PyQt4 import QtGui, QtCore
import sys
 
 
class GraphicsView(QtGui.QGraphicsView):
 
    start = None
    end = None
    item = None
    path = None
 
    def __init__(self, parent = None):
        super(GraphicsView, self).__init__()
        self.setScene(QtGui.QGraphicsScene())
        self.path = QtGui.QPainterPath()
        self.item = GraphicsPathItem()
        self.scene().addItem(self.item)
 
    def mousePressEvent(self, event):
        self.start = self.mapToScene(event.pos())
        self.path.moveTo(self.start)
 
    def mouseMoveEvent(self, event):
        self.end = self.mapToScene(event.pos())
        self.path.lineTo(self.end)
        self.start = self.end
        self.item.setPath(self.path)
 
class GraphicsPathItem(QtGui.QGraphicsPathItem):
 
    def __init__(self):
        super(GraphicsPathItem, self).__init__()
        pen = QtGui.QPen()
        pen.setColor(QtGui.QColor("black"))
        pen.setWidth(10)
        self.setPen(pen)
 
if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    mw = GraphicsView()
    mw.show()
    sys.exit(app.exec_())