MCPcopy Index your code
hub / github.com/matplotlib/matplotlib / __init__

Method __init__

lib/matplotlib/backends/_backend_tk.py:194–261  ·  view source on GitHub ↗
(self, figure=None, master=None)

Source from the content-addressed store, hash-verified

192 manager_class = _api.classproperty(lambda cls: FigureManagerTk)
193
194 def __init__(self, figure=None, master=None):
195 super().__init__(figure)
196 self._idle_draw_id = None
197 self._event_loop_id = None
198 w, h = self.get_width_height(physical=True)
199 self._tkcanvas = tk.Canvas(
200 master=master, background="white",
201 width=w, height=h, borderwidth=0, highlightthickness=0)
202 self._tkphoto = tk.PhotoImage(
203 master=self._tkcanvas, width=w, height=h)
204 self._tkcanvas_image_region = self._tkcanvas.create_image(
205 w//2, h//2, image=self._tkphoto)
206 self._tkcanvas.bind("<Configure>", self.resize)
207 self._tkcanvas.bind("<Map>", self._update_device_pixel_ratio)
208 self._tkcanvas.bind("<Key>", self.key_press)
209 self._tkcanvas.bind("<Motion>", self.motion_notify_event)
210 self._tkcanvas.bind("<Enter>", self.enter_notify_event)
211 self._tkcanvas.bind("<Leave>", self.leave_notify_event)
212 self._tkcanvas.bind("<KeyRelease>", self.key_release)
213 for name in ["<Button-1>", "<Button-2>", "<Button-3>"]:
214 self._tkcanvas.bind(name, self.button_press_event)
215 for name in [
216 "<Double-Button-1>", "<Double-Button-2>", "<Double-Button-3>"]:
217 self._tkcanvas.bind(name, self.button_dblclick_event)
218 for name in [
219 "<ButtonRelease-1>", "<ButtonRelease-2>", "<ButtonRelease-3>"]:
220 self._tkcanvas.bind(name, self.button_release_event)
221
222 # Mouse wheel on Linux generates button 4/5 events
223 for name in "<Button-4>", "<Button-5>":
224 self._tkcanvas.bind(name, self.scroll_event)
225 # Mouse wheel for windows goes to the window with the focus.
226 # Since the canvas won't usually have the focus, bind the
227 # event to the window containing the canvas instead.
228 # See https://wiki.tcl-lang.org/3893 (mousewheel) for details
229 root = self._tkcanvas.winfo_toplevel()
230
231 # Prevent long-lived references via tkinter callback structure GH-24820
232 weakself = weakref.ref(self)
233 weakroot = weakref.ref(root)
234
235 def scroll_event_windows(event):
236 self = weakself()
237 if self is None:
238 root = weakroot()
239 if root is not None:
240 root.unbind("<MouseWheel>", scroll_event_windows_id)
241 return
242 return self.scroll_event_windows(event)
243 scroll_event_windows_id = root.bind("<MouseWheel>", scroll_event_windows, "+")
244
245 # Can't get destroy events by binding to _tkcanvas. Therefore, bind
246 # to the window and filter.
247 def filter_destroy(event):
248 self = weakself()
249 if self is None:
250 root = weakroot()
251 if root is not None:

Callers

nothing calls this directly

Calls 2

get_width_heightMethod · 0.80
__init__Method · 0.45

Tested by

no test coverage detected