我正在编写一个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开始,不再需要暗模式修复。
答案 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的作者。