【问题标题】:Detect dark mode in macos from python从python检测macos中的暗模式
【发布时间】:2019-02-15 00:56:08
【问题描述】:

我正在编写一个 PyQt 应用程序,我必须添加一个补丁,以便字体在启用暗模式的 macos 上可读:

app = QApplication([])
# Fix for the font colours on macos when running dark mode
if sys.platform == 'darwin':
    p = app.palette()
    p.setColor(QPalette.Base, QColor(101, 101, 101))
    p.setColor(QPalette.ButtonText, QColor(231, 231, 231))
    app.setPalette(p)
main_window = MainWindow()
main_window.show()
app.exec_()

这个补丁的问题是它使在轻模式下的 macos 上的东西不可读。

有没有办法可以从 python 或通过子进程使用标准 shell 命令检测 macos 上的暗模式?

编辑: 从 PyQt 5.12 开始,不再需要暗模式修复。

【问题讨论】:

    标签: python macos macos-mojave


    【解决方案1】:

    如果您不想导入 pyobjc,可以使用 Darkdetect,这是一个仅使用标准 Python 发行版提供的依赖项的专用包。

    用法:

    import darkdetect
    
    >>> darkdetect.theme()
    'Dark'
    
    >>> darkdetect.isDark()
    True
    
    >>> darkdetect.isLight()
    False
    

    Darkdetect 也可在 PyPI 上使用:pip install darkdetect

    免责声明:我是 Darkdetect 的作者。

    【讨论】:

    • 很好的发现,@asottile!
    【解决方案2】:

    this question 的基础上,您可以安装pyobjc 并使用NSUserDefaults

    >>> from Foundation import NSUserDefaults
    >>> NSUserDefaults.standardUserDefaults().stringForKey_('AppleInterfaceStyle')
    'Dark'
    

    【讨论】:

      猜你喜欢
      • 2019-01-11
      • 2021-03-25
      • 2021-10-14
      • 2021-07-31
      • 1970-01-01
      • 1970-01-01
      • 2019-05-09
      • 2020-01-28
      • 1970-01-01
      相关资源
      最近更新 更多