Когда разрабатываете свой 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
Dr. Roberto Morales Ojeda
(@DrRobertoMOjeda) en X
En la sede del Comité Central conmemoramos el Día de la Rebeldía Nacional teniendo como brújula el legado del Comandante en Jefe y la exhortación de @DiazCanelB a trabajar por hacer de cada día un #26deJulio.También entregamos el carnet a nuevos miembros del PCC y la UJC
https://x.com/DrRobertoMOjeda/status/1947718755200733410
Este sábado en el municipio de #Holguín fueron inaguradas varias obras en saludo al Día de la Rebeldía Nacional el próximo #26deJulio, cuando se cumplen 71 años del asalto a los Cuarteles Moncada y Carlos Manuel de Céspedes.
El recorrido contó con la presencia de Osmani Viñals García, primer secretario del Comité Municipal del PCC en Holguín, Rafael Antonio Brown Sutherland, presidente de la Asamblea Municipal del Poder Popular y Yunior Torres Almaguer, intendente municipal.
En el reparto Luz del propio consejo popular fueron remozados los consultorios 11,12,13 y 14 del médico de la familia donde se trabajó en la impermeabilización, cambio de carpintería, pintura, resane de muros, reparación de la red hidráulica sanitaria, con una inversión valorada en los 2.1 millones de pesos.
El reparto Piedra Blanca del consejo popular Vista Alegre fue testigo de la inauguración del consultorio 1 que atiende a una población aproximada de 1200 pacientes. En la obra se ejecutó un presupuesto de 3468.1 millones de pesos donde se cambió la carpintería, hidrosanitaria, la electricidad, pintura y enchapes.
Los habitantes del reparto La Quinta perteneciente a la circunscripción 26 del consejo popular Vista Alegre agradecieron el nuevo taller de servicios técnicos donde se trabajó en el enchape, cambio de carpintería, cubierta y pintura.
En la circunscripción 31 fueron entregadas el mes pasado a madres con tres hijos y otros casos especiales 3 viviendas en la calle 14, obra ejecutada por la constructora DOMUS. El periplo concluyó en el combinado deportivo Jesús Manuel Feliú Leyva donde se reanimó y pintó el gimnasio de pesa y gimnasia rítmica.
✒️ y 📸 John Alex Fernández Leyva
El municipio de #Moa conquistó la sede del acto provincial por el #26deJulio en conmemoración a los asaltos a los cuarteles Moncada y Carlos Manuel de Céspedes, el 26 de julio de 1953.
A 71 años de aquellos sucesos acaecidos en Santiago de Cuba y Bayamo la fecha se conmemora en fraterna emulación entre los diferentes territorios para obtener la sede.
La emulación provincial otorgó la condición de Destacados a los municipios de Rafael Freyre y Gibara, mientras los municipios de Sagua de Tánamo y #Holguín recibieron también el Reconocimiento.
La noticia se conoció en encuentro entre las autoridades y la prensa en el territorio.
Felicidades a los moenses!
📸 tomada de Internet