首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Python中检查外部显示器是否打开或关闭?

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

Stack Overflow用户
提问于 2018-07-17 17:10:04
回答 1查看 1.3K关注 0票数 2

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

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

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

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-17 18:05:00

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

代码语言:javascript
复制
$ system_profiler SPDisplaysDataType

这将返回如下信息:

代码语言:javascript
复制
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语言中使用命令行参数运行命令行程序并接收输出的更多信息,即:

代码语言:javascript
复制
>>> import subprocess
>>> result = subprocess.run(['system_profiler', 'SPDisplaysDataType'], stdout=subprocess.PIPE)
>>> result.stdout

result.stdout将包含返回的字符串(类似于前面所示的内容)。然后,您可以搜索返回的字符串,其中可能包含您想要的参数:

代码语言:javascript
复制
if "Display Type" not in result.stdout: 
    screenConnected = false
    playMusic()

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

我不确定是否会有回调方法来解决这个问题/我自己还没有找到任何Python库,但请在我的回答中发表任何意见,我会更新的。

让我知道这是否有效!

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51377403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档