https://github.com/python/cpython/commit/8b6175c2619c8fefa74a1ba33b8d37b6d13716e3
commit: 8b6175c2619c8fefa74a1ba33b8d37b6d13716e3
branch: 3.12
author: Miss Islington (bot) <[email protected]>
committer: terryjreedy <[email protected]>
date: 2024-05-21T04:09:30Z
summary:

[3.12] gh-119174: Fix high DPI causes turtledemo(turtle-graphics examples) 
windows blurry (GH-119175) (#119290)

gh-119174: Fix high DPI causes turtledemo(turtle-graphics examples) windows 
blurry (GH-119175)

------

(cherry picked from commit 538ed5e4818aa0d0aa759634e8bfa23e317434a1)

Co-authored-by: Wulian233 <[email protected]>

files:
A Misc/NEWS.d/next/Library/2024-05-19-18-49-04.gh-issue-119174.5GTv7d.rst
M Lib/idlelib/config.py
M Lib/idlelib/pyshell.py
M Lib/idlelib/util.py
M Lib/turtledemo/__main__.py

diff --git a/Lib/idlelib/config.py b/Lib/idlelib/config.py
index 7fc08ef9748182..6a5acac9be8888 100644
--- a/Lib/idlelib/config.py
+++ b/Lib/idlelib/config.py
@@ -158,8 +158,9 @@ def __init__(self, _utest=False):
         self.defaultCfg = {}
         self.userCfg = {}
         self.cfg = {}  # TODO use to select userCfg vs defaultCfg
+
+        # See https://bugs.python.org/issue4630#msg356516 for following.
         # self.blink_off_time = <first editor text>['insertofftime']
-        # See https://bugs.python.org/issue4630#msg356516.
 
         if not _utest:
             self.CreateConfigHandlers()
diff --git a/Lib/idlelib/pyshell.py b/Lib/idlelib/pyshell.py
index 1524fccd5d20f8..d8b2652d5d7979 100755
--- a/Lib/idlelib/pyshell.py
+++ b/Lib/idlelib/pyshell.py
@@ -11,15 +11,9 @@
           "Your Python may not be configured for Tk. **", file=sys.__stderr__)
     raise SystemExit(1)
 
-# Valid arguments for the ...Awareness call below are defined in the following.
-# 
https://msdn.microsoft.com/en-us/library/windows/desktop/dn280512(v=vs.85).aspx
 if sys.platform == 'win32':
-    try:
-        import ctypes
-        PROCESS_SYSTEM_DPI_AWARE = 1  # Int required.
-        
ctypes.OleDLL('shcore').SetProcessDpiAwareness(PROCESS_SYSTEM_DPI_AWARE)
-    except (ImportError, AttributeError, OSError):
-        pass
+    from idlelib.util import fix_win_hidpi
+    fix_win_hidpi()
 
 from tkinter import messagebox
 
diff --git a/Lib/idlelib/util.py b/Lib/idlelib/util.py
index a7ae74b0579004..e05604ab4853f6 100644
--- a/Lib/idlelib/util.py
+++ b/Lib/idlelib/util.py
@@ -12,11 +12,26 @@
     * std streams (pyshell, run),
     * warning stuff (pyshell, run).
 """
+import sys
 
 # .pyw is for Windows; .pyi is for typing stub files.
 # The extension order is needed for iomenu open/save dialogs.
 py_extensions = ('.py', '.pyw', '.pyi')
 
+
+# Fix for HiDPI screens on Windows.  CALL BEFORE ANY TK OPERATIONS!
+# URL for arguments for the ...Awareness call below.
+# 
https://msdn.microsoft.com/en-us/library/windows/desktop/dn280512(v=vs.85).aspx
+if sys.platform == 'win32':  # pragma: no cover
+    def fix_win_hidpi():  # Called in pyshell and turtledemo.
+        try:
+            import ctypes
+            PROCESS_SYSTEM_DPI_AWARE = 1  # Int required.
+            
ctypes.OleDLL('shcore').SetProcessDpiAwareness(PROCESS_SYSTEM_DPI_AWARE)
+        except (ImportError, AttributeError, OSError):
+            pass
+
+
 if __name__ == '__main__':
     from unittest import main
     main('idlelib.idle_test.test_util', verbosity=2)
diff --git a/Lib/turtledemo/__main__.py b/Lib/turtledemo/__main__.py
index 2ab6c15e2c079e..731f98b02b17a7 100755
--- a/Lib/turtledemo/__main__.py
+++ b/Lib/turtledemo/__main__.py
@@ -92,13 +92,15 @@
 from idlelib.colorizer import ColorDelegator, color_config
 from idlelib.percolator import Percolator
 from idlelib.textview import view_text
+import turtle
 from turtledemo import __doc__ as about_turtledemo
 
-import turtle
+if sys.platform == 'win32':
+    from idlelib.util import fix_win_hidpi
+    fix_win_hidpi()
 
 demo_dir = os.path.dirname(os.path.abspath(__file__))
 darwin = sys.platform == 'darwin'
-
 STARTUP = 1
 READY = 2
 RUNNING = 3
diff --git 
a/Misc/NEWS.d/next/Library/2024-05-19-18-49-04.gh-issue-119174.5GTv7d.rst 
b/Misc/NEWS.d/next/Library/2024-05-19-18-49-04.gh-issue-119174.5GTv7d.rst
new file mode 100644
index 00000000000000..7b467b9ebd0d80
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2024-05-19-18-49-04.gh-issue-119174.5GTv7d.rst
@@ -0,0 +1,3 @@
+Fix high DPI causes turtledemo(turtle-graphics examples) windows blurry
+Patch by Wulian233 and Terry Jan Reedy
+

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]

Reply via email to