python-3.x Pyqt5无法选择默认的光主题时切换回黑暗

ars1skjm  于 2023-06-25  发布在  Python
关注(0)|答案(1)|浏览(200)

当应用黑暗主题并试图切换回默认值时,它是整个用户界面的某种其他灯光主题。在挖掘时,我发现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方法之前起作用。任何建议都会很好。

dvtswwa3

dvtswwa31#

解决了我的问题-解决方案在下面。最简单的暗/光开关我能弄明白。在深入了解qdarktheme模块之后,我使用了带有setStyleSheet的QCoreApplication。给你

def switch_theme(self):
  self.theme_switch = not self.theme_switch
  if self.theme_switch:
    qdarktheme.setup_theme ()
  else:
    app = QCoreApplication.instance ()
    app.setStyleSheet ("")

相关问题