当应用黑暗主题并试图切换回默认值时,它是整个用户界面的某种其他灯光主题。在挖掘时,我发现app.style()返回了一个QCommonStyle对象,所以我导入了它并尝试使用它,但结果可以在下面的屏幕截图中看到。我在qdarktheme中使用“light”参数时得到了类似的结果。我还尝试保存app.style()返回值,并在我想要切换时将其返回,但是traceback显示QCommonStyle的对象被删除了。现在我几乎没有主意了,特别是在QCommonStyle没有像预期的那样工作之后。
Not the default theme
Indeed the default theme
app = QtWidgets.QApplication (sys.argv)
#qdarktheme.setup_theme ()
#qdarktheme.setup_theme ("light")
#qdarktheme.setup_theme ("auto")
#app.setStyle("Windows")
#app.setStyle(QCommonStyle())
ui = MainWindow ()
ui.show ()
app.setWindowIcon(QtGui.QIcon('ippico.jpg'))
ui.setWindowIcon(QtGui.QIcon('ippico.jpg'))
sys.exit (app.exec_ ())
编辑:在此期间,我想出了一半的解决方案,但UI不更新时,切换到轻。
def switch_theme(self):
self.theme_switch = not self.theme_switch
if self.theme_switch:
logging.info("DARK")
qdarktheme.setup_theme ()
else:
logging.info("BRIGHT")
self.setStyleSheet ('')
看来我错过了某种触发器,终于更新显示的用户界面。使用pyqt5s的update方法不起作用,setupUi简单地破坏了它。我发现去掉样式表会迫使它回到默认设计,但这只在调用show方法之前起作用。任何建议都会很好。
1条答案
按热度按时间dvtswwa31#
解决了我的问题-解决方案在下面。最简单的暗/光开关我能弄明白。在深入了解qdarktheme模块之后,我使用了带有setStyleSheet的QCoreApplication。给你