我正在尝试使用python获取屏幕尺寸。我一直得到错误的值,因为我的代码考虑了比例因子。例如:我的屏幕分辨率设置为:2736 x1824。我的比例因子是200%,所以当我执行代码时,我得到1368 x912。
import win32api
width = GetSystemMetrics(0)
height = GetSystemMetrics(1)
print('Width:', width)
print('Height:', height)
有什么方法可以获取没有缩放因子的Windows设置中所示的分辨率?我希望能够阅读2736 x 1824。
答案 0 :(得分:3)
import ctypes
scaleFactor = ctypes.windll.shcore.GetScaleFactorForDevice(0) / 100
您可以使用ctypes通过shcore获得比例因子。 然后,您可以从中计算出实际分辨率。
即:scaleFactor 1.25为125%
答案 1 :(得分:0)
您的申请不是DPI aware。 Windows必须向应用程序说谎有关尺寸,并放大GUI以适应比例。
快速修复:
import ctypes
ctypes.windll.user32.SetProcessDPIAware()
对于可执行文件,建议在清单文件中设置DPI感知。