Kaydet (Commit) a96c96f5 authored tarafından Serhiy Storchaka's avatar Serhiy Storchaka Kaydeden (comit) GitHub

bpo-31500: IDLE: Scale default fonts on HiDPI displays. (#3639)

üst 3d1e2ab5
...@@ -113,8 +113,10 @@ class FileList: ...@@ -113,8 +113,10 @@ class FileList:
def _test(): def _test():
from idlelib.editor import fixwordbreaks from idlelib.editor import fixwordbreaks
from idlelib.run import fix_scaling
import sys import sys
root = Tk() root = Tk()
fix_scaling(root)
fixwordbreaks(root) fixwordbreaks(root)
root.withdraw() root.withdraw()
flist = FileList(root) flist = FileList(root)
......
...@@ -12,6 +12,8 @@ import tkinter.messagebox as tkMessageBox ...@@ -12,6 +12,8 @@ import tkinter.messagebox as tkMessageBox
if TkVersion < 8.5: if TkVersion < 8.5:
root = Tk() # otherwise create root in main root = Tk() # otherwise create root in main
root.withdraw() root.withdraw()
from idlelib.run import fix_scaling
fix_scaling(root)
tkMessageBox.showerror("Idle Cannot Start", tkMessageBox.showerror("Idle Cannot Start",
"Idle requires tcl/tk 8.5+, not %s." % TkVersion, "Idle requires tcl/tk 8.5+, not %s." % TkVersion,
parent=root) parent=root)
...@@ -1457,6 +1459,8 @@ def main(): ...@@ -1457,6 +1459,8 @@ def main():
NoDefaultRoot() NoDefaultRoot()
root = Tk(className="Idle") root = Tk(className="Idle")
root.withdraw() root.withdraw()
from idlelib.run import fix_scaling
fix_scaling(root)
# set application icon # set application icon
icondir = os.path.join(os.path.dirname(__file__), 'Icons') icondir = os.path.join(os.path.dirname(__file__), 'Icons')
......
...@@ -184,6 +184,7 @@ def show_socket_error(err, address): ...@@ -184,6 +184,7 @@ def show_socket_error(err, address):
import tkinter import tkinter
from tkinter.messagebox import showerror from tkinter.messagebox import showerror
root = tkinter.Tk() root = tkinter.Tk()
fix_scaling(root)
root.withdraw() root.withdraw()
msg = f"IDLE's subprocess can't connect to {address[0]}:{address[1]}.\n"\ msg = f"IDLE's subprocess can't connect to {address[0]}:{address[1]}.\n"\
f"Fatal OSError #{err.errno}: {err.strerror}.\n"\ f"Fatal OSError #{err.errno}: {err.strerror}.\n"\
...@@ -277,6 +278,18 @@ def exit(): ...@@ -277,6 +278,18 @@ def exit():
sys.exit(0) sys.exit(0)
def fix_scaling(root):
"""Scale fonts on HiDPI displays."""
import tkinter.font
scaling = float(root.tk.call('tk', 'scaling'))
if scaling > 1.4:
for name in tkinter.font.names(root):
font = tkinter.font.Font(root=root, name=name, exists=True)
size = int(font['size'])
if size < 0:
font['size'] = round(-0.75*size)
class MyRPCServer(rpc.RPCServer): class MyRPCServer(rpc.RPCServer):
def handle_error(self, request, client_address): def handle_error(self, request, client_address):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment