Динамическое изменение стилей QProgressBar в PyQt
Мне нужно изменять стили в зависимости от действий, происходящих в программе. Аналог JS на HTML странице, где можно добавлять, удалять классы из CSS, только в PyQt.
Я пробовал сделать нечто подобное:
if strength < 33:
self.reliability.setObjectName('rel-0')
elif strength < 66:
self.reliability.setObjectName('rel-1')
else:
self.reliability.setObjectName('rel-2')
Предварительно прописав в файле со стилями эти селекторы:
#rel-0, #rel-1, #rel-2 {
border: 2px solid #453e3e;
border-radius: 5px;
text-align: center;
background-color: #453e3e;
color: rgba(69, 62, 62, 0);
}
#rel-0::chunk {
background-color: #ed0909;
}
#rel-1::chunk {
background-color: #e3c010;
}
#rel-2::chunk {
background-color: #44d111;
}
Но, судя по всему при изменении ObjectName
элементы не обновляют стили, которые присущи этим идентификаторам.
Я также пытался делать repaint()
и update()
. Но видимо они тоже не "видят" изменение стилей.
PS: Неужели придется делать каждый раз setStylesheet()
?
Источник: Stack Overflow на русском