Python如何查看外接显示器是开还是关?

How to check whether an external display is ON or OFF in Python?

我有一个 Mac Mini,它通过 HDMI 连接到一个外部显示器。它是第三方显示器(戴尔制造); Apple 键盘上的 "change brightness" 功能键对显示没有影响。

只需手动按下显示器表面的电源按钮即可切换显示器 ON/OFF 状态。

我正在寻找 Python 代码来检查此显示器是打开还是关闭。我对基于命令行的解决方案持开放态度。

请注意,无论显示器是打开还是关闭,显示器都会保持与计算机的连接。因此,Display Manager library 在这里帮不了我。

上下文是我想要一个 Python 脚本只在显示器关闭时播放一些音频。

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

$ system_profiler SPDisplaysDataType

这将return信息如:

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 将包含字符串 returned(如前所示)。然后你可以在 returned 字符串中搜索你想要的参数:

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

显然值得检查其他参数并添加一些错误处理,但也许这是一个开始的地方。

我不确定是否有回调方法/我自己没有找到任何 Python 库,但请在我的回答中发表评论,我会更新。

让我知道这是否可行!