# Must run before QApplication is instantiated, otherwise certain widget styles will remain unset
PyQt5.QtWidgets.QApplication.setStyle('fusion')
app = YourQApplicationClassHere(sys.argv)
# Must run after QApplication is instantiated, to apply any latent color scheme changes
PyQt5.QtWidgets.QApplication.setStyle('fusion')
除了样式表的外部实现或自己实现之外,没有其他方法(内置的)。。在
我强烈建议您检查this reply中的一个。在
它说的是this stylesheet。在
在这个线程中,还有一些方法可以实现它。在
我自己也在努力解决这个问题(PyQt5.14),并且已经找到了如何让macOS的暗模式与PyQt5一起工作。你必须打电话给
QApplication.setStyle('style name here')
。无论出于什么原因,似乎任何颜色方案的改变都是惰性的,直到被
setStyle()
激活。(如果您使用自定义调色板调用QApplication.setPalette(palette)
,则可以看到这一点;某些颜色将更改,而其他颜色则不会更改,直到调用setStyle()
,所有颜色最终都会更改)我只能推测在app start上检测到暗模式,但没有激活。在为什么在调用
setStyle()
之前,配色方案的更改才适用,我不知道。我猜是PyQt5中的一个bug。在有两条规则可以使
setStyle()
技巧起作用:setStyle()
。这是在实例化您的setStyle()
之前的setStyle()
调用的补充,总共两个setStyle()
setStyle()
必须使用字符串参数调用。给它一个QStyle
对象没有任何作用。在因此,要让你的应用程序与macOS的暗模式同步配色方案:
最后一点警告:如果你用pyinstaller冻结你的应用程序,甚至连
setStyle()
技巧也行不通。在相关问题 更多 >
编程相关推荐