从python检测macos中的暗模式

时间:2019-02-15 00:56:08

标签: 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_()

此修补程序的问题在于,在光亮模式下,macOS无法读取内容。

是否可以通过python或通过子进程使用标准的shell命令在macOS上检测暗模式?

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

用法:

import darkdetect

>>> darkdetect.theme()
'Dark'

>>> darkdetect.isDark()
True

>>> darkdetect.isLight()
False

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

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