从python检测macos中的暗模式

我正在编写一个 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 上使用 light 模式无法读取内容。


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


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


RISEBY
浏览 127回答 2
2回答

海绵宝宝撒

如果您不想导入 pyobjc,您可以使用Darkdetect,这是一个专用包,仅使用标准 Python 发行版提供的依赖项。用法:import darkdetect>>> darkdetect.theme()'Dark'>>> darkdetect.isDark()True>>> darkdetect.isLight()FalseDarkdetect 也可在 PyPI 上使用:pip install darkdetect.

慕勒3428872

基于此问题,您可以安装pyobjc和使用NSUserDefaults:>>> from Foundation import NSUserDefaults>>> NSUserDefaults.standardUserDefaults().stringForKey_('AppleInterfaceStyle')'Dark'
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python