В сценарии, который я недавно написал, я заметил, что при использовании filedialog.askopenfilename() на мониторе 4K при масштабировании 200 % диалоговое окно файла имело разрешение 1920x1080 вместо ожидаемого 4K. Затем я реализовал некоторые возможности построения графиков в сценарии и использовал %matplotlib qt, чтобы переключить серверную часть matplotlib на Qt по какой-то причине, которую я не могу вспомнить. После этого я заметил, что все мои окна Tkinter имеют правильное разрешение, хотя я не менял ничего, непосредственно касающегося Tkinter.
Я пытался выяснить, что было изменено, и запустил следующий код, чтобы проверить, что на самом деле изменилось. Я запускал это на своем ноутбуке с монитором 1920x1200 (диагональ 16 дюймов).
Код: Выделить всё
import tkinter
from win32api import GetSystemMetrics
import ctypes
# Comment out the line below to see the difference (Requires restarting the Jupyter Kernel)
%matplotlib qt
root = tkinter.Tk()
dpi = root.winfo_fpixels('1i')
print('Tkinter DPI is:', dpi)
print("Width =", GetSystemMetrics(0))
print("Height =", GetSystemMetrics(1))
print('Process DPI Awareness: ', ctypes.windll.shcore.GetProcessDpiAwareness())
Код: Выделить всё
Tkinter DPI is: 96.09458128078816
Width = 1536
Height = 960
Process DPI Awareness: 0
Код: Выделить всё
Tkinter DPI is: 120.11822660098522
Width = 1920
Height = 1200
Process DPI Awareness: 0
Подробнее здесь: https://stackoverflow.com/questions/793 ... r-notebook