@@ -54,7 +54,6 @@ def __init__(self):
54
54
55
55
self .currentZoom = 1
56
56
57
- self .pixmap = None
58
57
self .isDrawable = True
59
58
self .brushPixmap = QPixmap (":/assets/cursor.png" )
60
59
self .setBrush ()
@@ -75,8 +74,7 @@ def setImage(self, path):
75
74
Open an image from a file.
76
75
'''
77
76
self .clear ()
78
- self .pixmap = QPixmap (path )
79
- self .image .setPixmap (self .pixmap )
77
+ self .image .setPixmap (QPixmap (path ))
80
78
81
79
def wheelEvent (self , event ):
82
80
'''
@@ -91,6 +89,8 @@ def wheelEvent(self, event):
91
89
self .currentZoom *= factor
92
90
self .setBrush (size = self .brushSize , factor = self .currentZoom )
93
91
self .scale (factor , factor )
92
+ event .accept ()
93
+ super ().wheelEvent (event )
94
94
95
95
def mousePressEvent (self , event ):
96
96
'''
@@ -106,9 +106,11 @@ def mousePressEvent(self, event):
106
106
if event .buttons () == Qt .LeftButton : # Get drawing coordinates reference with left click
107
107
QApplication .setOverrideCursor (self .drawingCursor )
108
108
self .drawReference = self .mapToScene (event .pos ())
109
+ super ().mousePressEvent (event )
109
110
110
111
def mouseReleaseEvent (self , event ):
111
112
QApplication .restoreOverrideCursor ()
113
+ super ().mouseReleaseEvent (event )
112
114
113
115
def mouseMoveEvent (self , event ):
114
116
'''
@@ -136,15 +138,17 @@ def mouseMoveEvent(self, event):
136
138
QApplication .setOverrideCursor (self .drawingCursor )
137
139
138
140
if event .buttons () == Qt .LeftButton and self .isDrawable and event .modifiers () == Qt .NoModifier : # Draw with left click pressed
139
- self .painter .begin (self .pixmap )
141
+ pixmap = self .image .pixmap ()
142
+ self .painter .begin (pixmap )
140
143
self .painter .setPen (
141
144
QPen (self .brushColor , self .brushSize , Qt .SolidLine , Qt .RoundCap ))
142
145
self .painter .drawLine (self .drawReference ,
143
146
self .mapToScene (event .pos ()))
144
147
self .drawReference = self .mapToScene (event .pos ())
145
148
self .addToUndoStack ()
146
149
self .painter .end ()
147
- self .image .setPixmap (self .pixmap )
150
+ self .image .setPixmap (pixmap )
151
+ super ().mouseMoveEvent (event )
148
152
149
153
def addToUndoStack (self ):
150
154
if len (self .painterStack ) > 40 : # Avoid high memory usage
@@ -157,12 +161,10 @@ def undo(self):
157
161
Undo drawing.
158
162
'''
159
163
if self .painterStack :
160
- self .pixmap = self .painterStack .pop ()
161
- self .image .setPixmap (self .pixmap )
164
+ self .image .setPixmap (self .painterStack .pop ())
162
165
163
166
def clear (self ):
164
- self .pixmap = None
165
- self .image .setPixmap (self .pixmap )
167
+ self .image .setPixmap (QPixmap ())
166
168
self .painterStack .clear ()
167
169
168
170
def dropEvent (self , event ):
0 commit comments