bpo-33656: On Windows, add API call saying that tk scales for DPI (GH-7137)
On Windows 8.1+ or 10, with DPI compatibility properties of the Python binary
unchanged, and a monitor resolution greater than 96 DPI, this should
make text and lines sharper. It should otherwise have no effect.
Using a magnifier, I determined that the improvement comes from horizontal and
lines being better lined up with the monitor pixels. I checked that this call causes
no problem on any Windows buildbot, including the Win7 buildbots. Unlike most
IDLE patches, this one can be easily reverted by users by removing a few lines,
at the top of idlelib/pyshell.py.
(cherry picked from commit 800415e3df
)
Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
This commit is contained in:
parent
904cdbaa9b
commit
144a8670f2
|
@ -1179,6 +1179,12 @@ colors for custom themes is added to Highlights tab of Settings dialog.
|
|||
(Contributed by Cheryl Sabella and Terry Jan Reedy in :issue:`33642`,
|
||||
:issue:`33768`, and :issue:`33679`)
|
||||
|
||||
On Windows, a new API call tells Windows that tk scales for DPI. On Windows
|
||||
8.1+ or 10, with DPI compatibility properties of the Python binary
|
||||
unchanged, and a monitor resolution greater than 96 DPI, this should
|
||||
make text and lines sharper. It should otherwise have no effect.
|
||||
(Contributed by Terry Jan Reedy in :issue:`33656`).
|
||||
|
||||
|
||||
importlib
|
||||
---------
|
||||
|
|
|
@ -3,6 +3,14 @@ Released on 2018-06-18?
|
|||
======================================
|
||||
|
||||
|
||||
bpo-33656: On Windows, add API call saying that tk scales for DPI.
|
||||
On Windows 8.1+ or 10, with DPI compatibility properties of the Python
|
||||
binary unchanged, and a monitor resolution greater than 96 DPI, this
|
||||
should make text and lines sharper. It should otherwise have no
|
||||
effect. If perchance it make text worse on your monitor, you can
|
||||
disable the ctypes.OleDLL call near the top of pyshell.py and report
|
||||
the problem on python-list or idle-dev@python.org.
|
||||
|
||||
bpo-33768: Clicking on a context line moves that line to the top
|
||||
of the editor window.
|
||||
|
||||
|
|
|
@ -373,11 +373,12 @@ class ConfigDialog(Toplevel):
|
|||
).grid(row=row, column=1, sticky=W, padx=7)
|
||||
elif opt['type'] == 'int':
|
||||
Entry(entry_area, textvariable=var, validate='key',
|
||||
validatecommand=(self.is_int, '%P')
|
||||
validatecommand=(self.is_int, '%P'), width=10
|
||||
).grid(row=row, column=1, sticky=NSEW, padx=7)
|
||||
|
||||
else:
|
||||
Entry(entry_area, textvariable=var
|
||||
else: # type == 'str'
|
||||
# Limit size to fit non-expanding space with larger font.
|
||||
Entry(entry_area, textvariable=var, width=15
|
||||
).grid(row=row, column=1, sticky=NSEW, padx=7)
|
||||
return
|
||||
|
||||
|
|
|
@ -8,6 +8,14 @@ except ImportError:
|
|||
print("** IDLE can't import Tkinter.\n"
|
||||
"Your Python may not be configured for Tk. **", file=sys.__stderr__)
|
||||
raise SystemExit(1)
|
||||
|
||||
if sys.platform == 'win32':
|
||||
import ctypes
|
||||
try:
|
||||
ctypes.OleDLL('shcore').SetProcessDpiAwareness(1)
|
||||
except (AttributeError, OSError):
|
||||
pass
|
||||
|
||||
import tkinter.messagebox as tkMessageBox
|
||||
if TkVersion < 8.5:
|
||||
root = Tk() # otherwise create root in main
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
On Windows, add API call saying that tk scales for DPI. On Windows
|
||||
8.1+ or 10, with DPI compatibility properties of the Python binary
|
||||
unchanged, and a monitor resolution greater than 96 DPI, this should
|
||||
make text and lines sharper. It should otherwise have no effect.
|
Loading…
Reference in New Issue