Я могу успешно создать новую палитру и установить ее в QApplication при запуске. Однако после запуска приложения я не могу больше менять цвета палитры. Я хотел бы изменить цвета кнопок, если пользователь выбирает конкретную тему. Текущий код, который работает при запуске, но не позднее, выглядит следующим образом:
palette = QtGui.QPalette()
palette.setColor(QtGui.QPalette.Window, QtGui.QColor(3, 18, 14))
palette.setColor(QtGui.QPalette.Base, QtGui.QColor(15, 15, 15))
palette.setColor(QtGui.QPalette.AlternateBase, QtGui.QColor(53, 53, 53))
palette.setColor(QtGui.QPalette.ToolTipBase, QtCore.Qt.white)
palette.setColor(QtGui.QPalette.Text, QtCore.Qt.white)
palette.setColor(QtGui.QPalette.Button, QtGui.QColor(53, 53, 53))
palette.setColor(QtGui.QPalette.ButtonText, QtCore.Qt.white)
palette.setColor(QtGui.QPalette.BrightText, QtCore.Qt.red)
palette.setColor(QtGui.QPalette.Highlight, QtGui.QColor(142, 45, 197).lighter())
palette.setColor(QtGui.QPalette.HighlightedText, QtCore.Qt.black)
app.setPalette(palette)
Тот же объект палитры, если он используется в слоте, не меняет цвет. Например, код в слоте:
palette.setColor(QtGui.QPalette.Button, QtGui.QColor(53, 53, 53))
app.setPalette(palette)
Может кто-нибудь, пожалуйста, дайте мне знать, что мне здесь не хватает?
Спасибо.
Edit:
Я только что узнал, что он изменил только некоторые области. Например, в слоте, который я написал, он меняет цвет подсветки, но не цвет QTab (который был установлен путем установки цвета на кнопку). Мой текущий код слота:
def change_theme(self):
pal = QtWidgets.QApplication.palette()
#The next line works
pal.setColor(QtGui.QPalette.Highlight, QtGui.QColor(0, 0, 128))
#The next line doesnt work. Expected it to change the Tab Widget color
#using this line.
pal.setColor(QtGui.QPalette.Button, QtGui.QColor(62, 80, 91))
QtWidgets.QApplication.setPalette(pal)