如何在Python中检查外部显示器是打开还是关闭?

时间:2018-07-17 09:10:04

标签: python macos external-display

我有一个Mac Mini,它通过HDMI连接到单个外部显示器。它是第三方显示器(由Dell制造); Apple键盘上的“更改亮度”功能键不影响显示。

只需手动按下显示器正面的电源按钮即可切换显示器的开/关状态。

我正在寻找检查此显示是ON还是OFF的Python代码。我愿意接受基于命令行的解决方案。

请注意,无论显示器是打开还是关闭,显示器始终保持与计算机的连接。因此,Display Manager library在这里无济于事。

上下文是我希望Python脚本仅在显示器关闭时播放一些音频。

1 个答案:

答案 0 :(得分:1)

根据this SO post,您可以使用以下命令在MacOS上检查所连接显示器的规格:

$ system_profiler SPDisplaysDataType

这将返回诸如以下信息:

Graphics/Displays:

    NVIDIA GeForce GT 640M:

      Chipset Model: NVIDIA GeForce GT 640M
      Type: GPU
      Bus: PCIe
      PCIe Lane Width: x16
      VRAM (Total): 512 MB
      Vendor: NVIDIA (0x10de)
      Device ID: 0x0fd8
      Revision ID: 0x00a2
      ROM Revision: 3707
      Displays:
        iMac:
          Display Type: LCD
          Resolution: 1920 x 1080
          Pixel Depth: 32-Bit Color (ARGB8888)
          Main Display: Yes
          Mirror: Off
          Online: Yes
          Built-In: Yes
          Connection Type: DisplayPort

我的假设是,当未连接任何显示器时,将没有Display TypeResolution或其他字符串。

Here是有关在Python中使用命令行参数运行命令行程序并接收输出的详细信息,即:

>>> import subprocess
>>> result = subprocess.run(['system_profiler', 'SPDisplaysDataType'], stdout=subprocess.PIPE)
>>> result.stdout

并且result.stdout将包含返回的字符串(如前所示)。然后,您可以搜索返回的字符串,其中可能包含您想要的参数:

if "Display Type" not in result.stdout: 
    screenConnected = false
    playMusic()

显然值得检查其他参数并添加一些错误处理,但这也许是一个起点。

我不确定是否可以通过回调方法来解决这个问题/我自己还没有找到任何Python库,但是请在我的答案中注释任何内容,然后我会进行更新。

让我知道这是否有效!