从python中检测macos中的暗模式

问题描述 投票:1回答:2

我正在写一个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_()

这个补丁的问题是它在使用light模式的macos上使其无法读取。

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

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

python macos macos-mojave
2个回答
1
投票

this question上建立,您可以安装pyobjc并使用NSUserDefaults

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

2
投票

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

用法:

import darkdetect

>>> darkdetect.theme()
'Dark'

>>> darkdetect.isDark()
True

>>> darkdetect.isLight()
False

DarkDetect也可在PyPI上找到:pip install darkdetect

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

© www.soinside.com 2019 - 2024. All rights reserved.