Когда разрабатываете свой GUI с помощью PyQt для какого-либо софта бывает необходимо позаимствовать цвета из текущего стиля интерфейса. Например, чтобы правильно раскрасить свои виджеты, подогнав их по цвету. Ведь бывает, что ваш GUI используется в разных софтах. Причём некоторые со светлой темой а другие с тёмной.
По умолчанию стили наследуются, но если вы задаёте какую-либо раскраску для части виджета через свой styleSheet, то требуется ссылаться на цвета текущего стиля.
Как это сделать? Как получить нужный цвет из палитры имеющегося стиля? Это достаточно просто, нужно использовать класс QPalette и его роли.
Например, мне нужно достать цвет текста из одного виджета и применить его в другом как цвет фона (не важно зачем именно так, просто захотелось😊).
Получаем палитру виджета и сразу достаём нужный цвет, указав его роль.
from PySide2.QtGui import QPalette
color = main_window.palette().color(QPalette.Text)
теперь можем использовать этот цвет в стилях
my_widget.setStyleSheet(f'background-color: {color.name()};')
Готово, мы динамически переопределили дефолтный стиль используя текущий стиль окна!
На самом деле есть запись покороче, в одну строку и без лишних переменных. Не очень-то по правилам CSS, но Qt это понимает.
my_widget.setStyleSheet('background-color: palette(Text);')
Этот способ не подходит если вам нужно как-то модифицировать цвет перед применением в своих стилях. В этом случае потребуется первый способ.
Зато он прекрасно сработает в файле .qss, то есть не придётся в коде прописывать раскраску отдельных элементов через ссылки на палитру, всё красиво сохранится в отдельном файле .qss!
QListView#my_widget::item:selected {
background: palette(Midlight);
}
Про имеющиеся роли можно почитать здесь🌍
#qt#tricks
🗽 Los jugadores de los Yankees quieren usar uniformes alternativos en partidos de visitante. ¿Deberían los Yankees comenzar a usar jerseys alternativos por primera vez en la historia de la franquicia?
#Yankees
🗞 | t.me/MLB_Daily
🗽 La camiseta de práctica de bateo azul marino de los Yankees ha sido aprobada por la MLB para ser usada en partidos, ya que forma parte de su conjunto de uniformes oficiales. Aún está por determinar si realmente la usarán en un partido.
#Yankees
🗞 | t.me/MLB_Daily
🧢🗽 Una mirada a la nueva rotación proyectada para los Yankees en el Día de Apertura después de que, según se informa, adquirieran a Ryan Weathers de los Marlins.
📊 Proyecciones a través de FanGraphs
#️⃣#Yankees
🗞 | t.me/MLB_Daily
📊 Los dos mejores jugadores de posición y los dos mejores lanzadores por fWAR esta temporada son TODOS de los New York Yankees 🤯
#Stats#Yankees
🗞 | t.me/MLB_Daily
💥 Lourdes Gurriel Jr será el primer cubano en ver acción en el #OpeningDay.
👉 Enfrentará a los #Yankees y partirá en el 6to turno y LF.
@CirculodeEspera
🏴☠️🗽 Paul Skenes quiere jugar para los Yankees, le dijo uno de sus compañeros de los Pirates a @randarino. Según se informa, Skenes no tiene confianza en que los Pirates alguna vez ganen, y quiere ser cambiado mucho antes de que comience su agencia libre después de la temporada 2029.
🗞 Vía Tal'kin Baseball
#️⃣#Skenes#Yankees
🗞 | t.me/MLB_Daily
🗽🗽 Aaron Judge continúa grabando su nombre en la historia de los Yankees empatando a Derek Jeter, Robinson Canó, Jorge Posada y a Dave Winfield como los máximos ganadores de Bates de plata en la historia de la franquicia.
#️⃣#Yankees#Judge
🗞 | t.me/MLB_Daily
🗽🩸 Aroldis Chapman dice que se sintió irrespetado por los Yankees y que se retiraría antes de volver a jugar para ellos.
#️⃣#Yankees#Chapman
🗞 | t.me/MLB_Daily
🗽🗽 Los Yankees y Cody Bellinger llegaron a un acuerdo por cinco años y $162.5 millones, según fuentes de ESPN. Hay cláusulas de rescisión después de la segunda y tercera temporada, un bono de firma de $20 millones y una cláusula de no intercambio completa.
#️⃣#Yankees#Bellinger
🗞 | t.me/MLB_Daily
❌🗽 Según Jorge Castillo, se espera que Cody Bellinger opte por no continuar con su contrato con los Yankees y se convierta en agente libre.
#️⃣#Yankees#Bellinger
🗞 | t.me/MLB_Daily