Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 176ad80

Browse files
committed
Merge pull request kivy-garden#14 from andnovar/on_pos_bind
pos bound backend_kivy calls draw() and backend_kivyagg change pos of…
2 parents eb6dc2c + bb941e8 commit 176ad80

File tree

2 files changed

+15
-5
lines changed

2 files changed

+15
-5
lines changed

backend_kivy.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -999,6 +999,7 @@ class FigureCanvasKivy(FocusBehavior, Widget, FigureCanvasBase):
999999
def __init__(self, figure, **kwargs):
10001000
Window.bind(mouse_pos=self._on_mouse_pos)
10011001
self.bind(size=self._on_size_changed)
1002+
self.bind(pos=self._on_pos_changed)
10021003
self.entered_figure = True
10031004
self.figure = figure
10041005
super(FigureCanvasKivy, self).__init__(figure=self.figure, **kwargs)
@@ -1126,6 +1127,9 @@ def leave_notify_event(self, guiEvent=None):
11261127
event = Event('figure_leave_event', self, guiEvent)
11271128
self.callbacks.process('figure_leave_event', event)
11281129

1130+
def _on_pos_changed(self, *args):
1131+
self.draw()
1132+
11291133
def _on_size_changed(self, *args):
11301134
'''Changes the size of the matplotlib figure based on the size of the
11311135
widget. The widget will change size according to the parent Layout

backend_kivyagg.py

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -176,8 +176,8 @@ def __init__(self, figure, **kwargs):
176176
self.figure = figure
177177
self.bind(size=self._on_size_changed)
178178
super(FigureCanvasKivyAgg, self).__init__(figure=self.figure, **kwargs)
179-
self.img = None
180179
self.img_texture = None
180+
self.img_rect = None
181181
self.blit()
182182

183183
def draw(self):
@@ -201,26 +201,32 @@ def draw(self):
201201
texture = Texture.create(size=(w, h))
202202
texture.flip_vertical()
203203
with self.canvas:
204-
Rectangle(texture=texture, pos=self.pos, size=(w, h))
204+
self.img_rect = Rectangle(texture=texture, pos=self.pos,
205+
size=(w, h))
205206
texture.blit_buffer(bytes(buf_rgba), colorfmt='rgba', bufferfmt='ubyte')
206207
self.img_texture = texture
207208

208209
filetypes = FigureCanvasKivy.filetypes.copy()
209210
filetypes['png'] = 'Portable Network Graphics'
210211

212+
def _on_pos_changed(self, *args):
213+
if self.img_rect is not None:
214+
self.img_rect.pos = self.pos
215+
211216
def _print_image(self, filename, *args, **kwargs):
212217
'''Write out format png. The image is saved with the filename given.
213218
'''
214219
l, b, w, h = self.figure.bbox.bounds
220+
img = None
215221
if self.img_texture is None:
216222
texture = Texture.create(size=(w, h))
217223
texture.blit_buffer(bytes(self.get_renderer().buffer_rgba()),
218224
colorfmt='rgba', bufferfmt='ubyte')
219225
texture.flip_vertical()
220-
self.img = Image(texture)
226+
img = Image(texture)
221227
else:
222-
self.img = Image(self.img_texture)
223-
self.img.save(filename)
228+
img = Image(self.img_texture)
229+
img.save(filename)
224230

225231
''' Standard names that backend.__init__ is expecting '''
226232
FigureCanvas = FigureCanvasKivyAgg

0 commit comments

Comments
 (0)