提问人:Ray Osborn 提问时间:9/28/2023 最后编辑:Ray Osborn 更新时间:9/28/2023 访问量:100
PyQt 使用的默认暗模式样式表是什么
What is the default dark mode stylesheet used by PyQt
问:
从 v5.12 开始,PyQt 在系统默认模式下会自动切换到暗模式,至少在 MacOS 上是这样。v5.12 样式表缺少一些功能,但在 v5.15 和 v6 中,默认看起来完全足够了。我希望能够在默认的浅色和深色模式之间动态切换,但我找不到标识要使用的适当样式表的文档,例如,我可以在三个默认样式表之间切换,但它们都不是深色主题的。
>>> import PyQt5
>>> app = PyQt5.QtWidgets.QApplication.instance()
>>> PyQt5.QtWidgets.QStyleFactory.keys()
['macintosh', 'Windows', 'Fusion']
>>> app.setStyleSheet('Fusion')
该函数不允许任何关键字参数,因此似乎没有诸如 .有谁知道如何访问系统本身从深色模式切换到浅色模式时使用的默认样式,反之亦然?上述选项均未以任何一种方式切换模式。setStyleSheet
mode='dark'
关于在 StackOverflow 上设置深色模式有很多问题,但所有建议都涉及安装另一个包,例如 或 ,或者编写自己的包,而我只想访问必须已经安装的样式表。qdarkstyle
qt-material
编辑:我从这个问题中看到,我可能应该问标准调色板而不是样式表。然而,问题仍然是在系统处于浅色或深色模式时如何访问 PyQt 使用的调色板。
答: 暂无答案
评论
app.setStyleSheet()
期望实际的样式表语法,不是有效的参数(包括 QWidget 的参数)。检查调试输出,您可能会看到“无法解析应用程序样式表”错误。此外,默认行为使用样式 (QStyle),而不是“样式表”;事实上,当一个样式表被设置时,Qt会解析它,并根据其参数使用QStyleSheetStyle)。也就是说,目前Qt没有提供手动强制深色或浅色模式的API,有一些方法可以通过现有应用程序的macOS功能来实现它。Fusion
setStyleSheet()
qt_mac_applicationIsInDarkMode