从python检测macos中的暗模式

Cru*_*234 3 python macos macos-mojave

我正在编写一个 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_()
Run Code Online (Sandbox Code Playgroud)

这个补丁的问题是它使 macos 上的灯光模式变得不可读。

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

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

小智 8

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

用法:

import darkdetect

>>> darkdetect.theme()
'Dark'

>>> darkdetect.isDark()
True

>>> darkdetect.isLight()
False
Run Code Online (Sandbox Code Playgroud)

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

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