summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWulian233 <71213467+Wulian233@users.noreply.github.com>2024-05-21 03:32:00 (GMT)
committerGitHub <noreply@github.com>2024-05-21 03:32:00 (GMT)
commit538ed5e4818aa0d0aa759634e8bfa23e317434a1 (patch)
tree789e51d4d033c908fa51eff14ea2e0590d24d1f2
parent172690227e771c2e8ab137815073e3a172c08dec (diff)
downloadcpython-538ed5e4818aa0d0aa759634e8bfa23e317434a1.zip
cpython-538ed5e4818aa0d0aa759634e8bfa23e317434a1.tar.gz
cpython-538ed5e4818aa0d0aa759634e8bfa23e317434a1.tar.bz2
gh-119174: Fix high DPI causes turtledemo(turtle-graphics examples) windows blurry (#119175)
------ Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
-rw-r--r--Lib/idlelib/config.py3
-rwxr-xr-xLib/idlelib/pyshell.py10
-rw-r--r--Lib/idlelib/util.py15
-rwxr-xr-xLib/turtledemo/__main__.py6
-rw-r--r--Misc/NEWS.d/next/Library/2024-05-19-18-49-04.gh-issue-119174.5GTv7d.rst3
5 files changed, 26 insertions, 11 deletions
diff --git a/Lib/idlelib/config.py b/Lib/idlelib/config.py
index 7fc08ef..6a5acac 100644
--- a/Lib/idlelib/config.py
+++ b/Lib/idlelib/config.py
@@ -158,8 +158,9 @@ class IdleConf:
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 1524fcc..d8b2652 100755
--- a/Lib/idlelib/pyshell.py
+++ b/Lib/idlelib/pyshell.py
@@ -11,15 +11,9 @@ except ImportError:
"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 a7ae74b..e05604a 100644
--- a/Lib/idlelib/util.py
+++ b/Lib/idlelib/util.py
@@ -12,11 +12,26 @@ TODO:
* 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 2ab6c15..731f98b 100755
--- a/Lib/turtledemo/__main__.py
+++ b/Lib/turtledemo/__main__.py
@@ -92,13 +92,15 @@ from tkinter import *
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 0000000..7b467b9
--- /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
+