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

标签 python macos external-display

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

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

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

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

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

最佳答案

根据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库,但请在我的答案中评论,我会更新。

让我知道这是否有效!

关于python - 如何在Python中检查外部显示器是打开还是关闭?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51377403/

相关文章:

python - 从字符串列创建虚拟变量

python - 如何使用子流程模块正确地与流程交互

python - 为什么我们使用 yield 在 Fastapi 中使用 sqlalchemy 获取 Sessionlocal?

macos - 如何使用 XCode 4.6 和 OS X 10.8 设置 SDL2

linux - 在 OSX 10.10.5 上使用 vagrant 时出现 curl 错误 23

xcode - 在 Swift 中使用 "+"作为字符串

python - 嵌套for循环与numpy

iphone - ios4 中不显示外部视频

ios - 外接显示器 HDMI 边距