Когда разрабатываете свой 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
arter97 Kernel | Android 14 | Nothing Phone (2)
✍️ Details:
- Version: r15
- Codename: #Pong
- Released: 15/03/24
🔽 Download: Normal & KSU Version
🆘 Support Threads: TG | XDA
🔖Tags : #Stock#Kernel#arter97#U
✨Changelogs:
- Backported lazy RCU to improve power consumption
- Other minor bug fixes and changes from Google
✍️ Note:
- This kernel is only compatible with Stock A14 NOS rom.
- Report issues (if any) in the support group with appropriate logs.
😎 Maintainer : @arter97
🔔 Updates : @NothingPhone2Updates
💬 Chat : @NothingPhone2
NothingMuchROM | Android 14 | Nothing Phone (2)
Nothing OS with some handful modifications for a better experience
✍️ Details:
- Version: r15 (NOS 2.6.0)
- Codename: #Pong
- Released: 08/07/24
🔽 Download : Here
🆘 Support group: TG | XDA
⚙️ Installation: Here
🔖Tags : #Stock#ROM#arter97#U#NothingPhone2
✨Changelogs:
- Stable release based on 2.6.0
- Custom bionic updated to use the latest AOSP compiler and fix several minor issues in the math library.
😎 Developer: @arter97
🔔 Updates: @NothingPhone2Updates
💬 Chat: @NothingPhone2
NothingMuchROM | Android 14 | Nothing Phone (2)
Nothing OS with some handful modifications for a better experience
✍️ Details:
- Version: r14 (NOS 2.5.6)
- Codename: #Pong
- Released: 02/07/24
🔽 Download : Here
🆘 Support group: TG | XDA
⚙️ Installation: Here
🔖Tags : #Stock#ROM#arter97#U#NothingPhone2
✨Changelogs:
- Stable release based on NOS 2.5.6
- Dirac is back, thanks to the fix from gotenksIN
✍️ Note:
- If you don't want dirac, stick to the r13 build based on NOS 2.5.6
😎 Developer: @arter97
🔔 Updates: @NothingPhone2Updates
💬 Chat: @NothingPhone2
NothingMuchROM | Android 16 | Nothing Phone (2)
✍️ Details:
- Version: r40
- Codename: #Pong
- Released: 10/03/26
🔽 Download : Here
🆘 Support group: Here
⚙️ Installation: Here
🌳 Source: Here
🔖Tags : #Stock#ROM#arter97#V#NothingPhone2
✨ Changelogs
- Update base to 4.0 (Pong_B4.0-260226-0955)
🗒 Note:
- Back up your data before proceeding.
- Make absolutely sure that you're flashing the respective firmware alongside the installation. Failure to do so will result in an untested scenario.
- Recovery flashable firmwares can be found here.
- It is recommended to use arter97's latest kernel build with this ROM.
👤 Developer: @arter97
🔔 Updates: @NothingPhone2Updates
💬 Chat: @NothingPhone2
NothingMuchROM | Android 15 | Nothing Phone (2)
✍️ Details:
- Version: r39
- Codename: #Pong
- Released: 20/09/25
🔽 Download : Here
🆘 Support group: Here
⚙️ Installation: Here
🔖Tags : #Stock#ROM#arter97#V#NothingPhone2
✨ Changelogs
- Update base to Pong-V3.2-250917-1451
🗒 Note:
- Back up your data before proceeding.
- Make absolutely sure that you're flashing the respective firmware alongside the installation. Failure to do so will result in an untested scenario.
- Recovery flashable firmwares can be found here.
- It is recommended to use arter97's latest kernel build with this ROM.
👤 Developer: @arter97
🔔 Updates: @NothingPhone2Updates
💬 Chat: @NothingPhone2
NothingMuchROM | Android 15 | Nothing Phone (2)
✍️ Details:
- Version: r37
- Codename: #Pong
- Released:15/07/25
🔽 Download : Here
🆘 Support group: Here
⚙️ Installation: Here
✨ Changelogs: Here
🔖Tags : #Stock#ROM#arter97#V#NothingPhone2
🗒 Note:
- Back up your data before proceeding.
- Make absolutely sure that you're flashing the respective firmware alongside the installation. Failure to do so will result in an untested scenario.
- Recovery flashable firmwares can be found here.
- Stable release based on 3.2 (Pong_V3.2-250708-2227_3.2)
- It is recommended to use arter97's latest kernel with this ROM.
👤 Developer: @arter97
🔔 Updates: @NothingPhone2Updates
💬 Chat: @NothingPhone2
NothingMuchROM | Android 15 | Nothing Phone (2)
✍️ Details:
- Version: r36
- Codename: #Pong
- Released: 23/05/25
🔽 Download : Here
🆘 Support group: Here
⚙️ Installation: Here
✨ Changelogs: Here
🔖Tags : #Stock#ROM#arter97#V#NothingPhone2
🗒 Note:
- Back up your data before proceeding.
- Make absolutely sure that you're flashing the respective firmware alongside the installation. Failure to do so will result in an untested scenario.
- Recovery flahsable firmwares can be found here.
- Flashing super is enough for users coming from r35.
- Stable release based on NOS 3.0, Build: Pong-V3.0-250506-1805.
- It is recommended to use arter97's latest kernel with this ROM.
👤 Developer: @arter97
🔔 Updates: @NothingPhone2Updates
💬 Chat: @NothingPhone2