Skip to content

Commit 8552c7a

Browse files
authored
Merge pull request #28588 from rnhmjoj/main
Fix scaling in Tk on non-Windows systems
2 parents 5f962a3 + f95e8ee commit 8552c7a

File tree

1 file changed

+10
-7
lines changed

1 file changed

+10
-7
lines changed

lib/matplotlib/backends/_backend_tk.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -176,8 +176,7 @@ def __init__(self, figure=None, master=None):
176176
self._tkcanvas_image_region = self._tkcanvas.create_image(
177177
w//2, h//2, image=self._tkphoto)
178178
self._tkcanvas.bind("<Configure>", self.resize)
179-
if sys.platform == 'win32':
180-
self._tkcanvas.bind("<Map>", self._update_device_pixel_ratio)
179+
self._tkcanvas.bind("<Map>", self._update_device_pixel_ratio)
181180
self._tkcanvas.bind("<Key>", self.key_press)
182181
self._tkcanvas.bind("<Motion>", self.motion_notify_event)
183182
self._tkcanvas.bind("<Enter>", self.enter_notify_event)
@@ -234,11 +233,15 @@ def filter_destroy(event):
234233
self._rubberband_rect_white = None
235234

236235
def _update_device_pixel_ratio(self, event=None):
237-
# Tk gives scaling with respect to 72 DPI, but Windows screens are
238-
# scaled vs 96 dpi, and pixel ratio settings are given in whole
239-
# percentages, so round to 2 digits.
240-
ratio = round(self._tkcanvas.tk.call('tk', 'scaling') / (96 / 72), 2)
241-
if self._set_device_pixel_ratio(ratio):
236+
ratio = None
237+
if sys.platform == 'win32':
238+
# Tk gives scaling with respect to 72 DPI, but Windows screens are
239+
# scaled vs 96 dpi, and pixel ratio settings are given in whole
240+
# percentages, so round to 2 digits.
241+
ratio = round(self._tkcanvas.tk.call('tk', 'scaling') / (96 / 72), 2)
242+
elif sys.platform == "linux":
243+
ratio = self._tkcanvas.winfo_fpixels('1i') / 96
244+
if ratio is not None and self._set_device_pixel_ratio(ratio):
242245
# The easiest way to resize the canvas is to resize the canvas
243246
# widget itself, since we implement all the logic for resizing the
244247
# canvas backing store on that event.

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy