我正在写一个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开始,不再需要暗模式修复。
在this question上建立,您可以安装pyobjc
并使用NSUserDefaults
:
>>> from Foundation import NSUserDefaults
>>> NSUserDefaults.standardUserDefaults().stringForKey_('AppleInterfaceStyle')
'Dark'
如果您不想导入pyobjc,可以使用Darkdetect,这是一个专用软件包,仅使用标准Python发行版提供的依赖项。
用法:
import darkdetect
>>> darkdetect.theme()
'Dark'
>>> darkdetect.isDark()
True
>>> darkdetect.isLight()
False
DarkDetect也可在PyPI上找到:pip install darkdetect
。
免责声明:我是Darkdetect的作者。