Когда разрабатываете свой 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
🤔 What phrases do you know with 🐶 ‘dog’? 🤩 We’re here to help you learn 7 phrases so you can feel like ‘a top dog’! Scroll through the images – and ✍️ write some sample sentences of your own!
🥹 Researchers from Japan say dogs could cry happy tears when they see their owners. 😊 Learn more about this story by clicking on the link in our bio!
Images: Getty
#learnenglish#idiom#vocabulary#englishclass#IELTS
Are you a helpful person? 💪😊 Help us out by writing the missing word in this expression which means ‘If a lot of people help, a task can be completed quickly and easily’.
Are you happy to help when you’re needed? 👇👇👇
MORE: Click the link in our bio to learn another expression with 'hand' that you can use in similar situations! 👋👋👋
Image: Getty
#learnenglish#vocabulary#englishclass#phrases#expressions#idiom#learnenglish
Do you know someone who always thinks that everyone else has a better life than them?! 🙄😅 Scroll through the images to find out how to use ‘the grass is always greener on the other side’ 🌱, and don’t forget to answer the questions on the last slide!
EXTRA: Could walking 7,000 steps a day could improve your mental health? 🚶 Click the link in our bio to find out and learn some useful vocabulary in the process! 📰💚
Image: Getty
#vocabulary#learnenglish#englishlanguage#expression#idiom#proverb#englishclass#speakenglish
You know when somebody just WON’T change their ways? 😠 We’ve got an English expression for that! ✅
Scroll through the images to find out how to use ‘You can’t teach an old dog new tricks.’ ❌🐶
Can you use it in a sentence – and do you have a similar expression in your language? 👇👇👇
MORE: If you'd like to learn some more animal idioms, like 'rabbit on 🐰' or 'as sick as a parrot 🦜', click the link in our bio!
Image: Getty
#trick#proverb#learnenglish#vocabulary#learnenglish#englishlanguage#expression#idiom#englishclass#speakenglish
What you do is more important than what you say, right? 👍 Can you complete this English expression that means exactly that? Write your answer in the comments and don’t forget to give this post a like!
Do you have a similar expression in your language? 👇👇👇
Want to learn more English expressions and idioms? Click the link in our bio to listen to our podcast The English We Speak!
Image: Getty
#learnenglish#esl#efl#vocabulary#englishclass#phrases#expressions#idiom#learnenglish#britishenglish#informalenglish#slang
😃Even if nobody in your family is called Bob, you can still use this informal English expression to say that a task is really simple and easy! Write your answer in the comments and be sure to like this post! Do you have a similar expression in your language? 👇👇👇
🤩 MORE: Learn about the stories behind our names with this episode of ⏱️ 6 Minute English. Click the link in our bio NOW!
#idioms#esl#efl#vocabulary#englishclass#phrases#expressions#idiom#learnenglish#britishenglish#informalenglish#slang
It’s almost New Year – and we’ve got a great expression you can use to say that ‘things will be different from now on!’ 🎉🥳 Choose the correct word to fill the gap – we’ll tell you the answer later!
MORE: Click the link in our bio to see what our presenter's hopes, plans and dreams for 2025 were! 😄
Image: Getty
#learnenglish#newyear#happynewyear#freshstart#newbeginning#vocabulary#englishclass#phrases#expressions#idiom#learnenglish#britishenglish#informalenglish#slang
🤩 Even if you don’t eat meat, you can still use this expression to say that you’re super-hungry! 😁 Write your answer in the comments and like and share this post! Do you have a similar expression in your language? 👇👇🤩
MORE: ⁉️Are you angry when you're hungry? There's an English expression for that! 😲 Click the link in our bio to find out what it is with ⏱️ 6 Minute English!
Images: Getty
#learnenglish#hungry#starving#horse#esl#efl#vocabulary#englishclass#phrases#expressions#idiom#learnenglish#britishenglish#informalenglish#slang
🤔 Did something bad happen to you when you weren’t expecting it? You’re not going to put yourself in that situation again, are you? 😄 Learn this useful English expression that summarises this life lesson. Give this post a like, and ✍️ put your answer in the comments! Do you have a similar expression in your language?
🤩 Click on the link in our bio to learn some modern idioms!
Images: Getty
#learnenglish#advice#idioms#esl#efl#vocabulary#englishclass#phrases#expressions#oncebitten#britishenglish#lifelesson#inspiration#slang