在 MacOS 中获取屏幕的物理尺寸

Getting physical dimensions of screen in MacOS

提问人:Jason C 提问时间:11/13/2023 更新时间:11/13/2023 访问量:48

问:

是否可以在 macOS 上使用 Python 获取给定显示器的物理尺寸(毫米或其他)?

我正在查看 AppKit 的 NSScreen,但它只提供像素分辨率(通过),并且似乎没有报告物理大小。我不确定我还能采取什么其他方法。frame

python macOS appkit

评论


答:

1赞 Marco Bonelli 11/13/2023 #1

您应该能够从 CGDisplayScreenSize 获取此信息,根据文档,该信息返回“指定显示器的大小(以毫米为单位)”。

Quartz Python 库似乎有一个绑定:

from Quartz import CGDisplayScreenSize, CGMainDisplayID

display_id = CGMainDisplayID()
dimensions = CGDisplayScreenSize(display_id)
print(dimensions)

评论

0赞 Jason C 11/13/2023
甜蜜的,谢谢。如果有人想知道,看起来您也可以从使用 中获取显示 ID,并将其传递给。NSScreendisplay_id = screen.deviceDescription()["NSScreenNumber"]CGDisplayScreenSize
1赞 Sash Sinha 11/13/2023 #2

您可以使用 Quartz。CGDisplayScreenSize

返回显示器的宽度和高度(以毫米为单位)。
func CGDisplayScreenSize(_ display: CGDirectDisplayID) -> CGSize

import Quartz

def main() -> None:
    main_display_id = Quartz.CGMainDisplayID()
    width_mm, height_mm = Quartz.CGDisplayScreenSize(main_display_id)
    print(f'{width_mm = :.2f}, {height_mm = :.2f}')

if __name__ == '__main__':
    main()

使用 M1 Macbook Air 的输出示例:

width_mm = 286.87, height_mm = 179.29