Когда разрабатываете свой 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
👁🗨 Настольная игра «Zero» обязательно понравится:
– Новичкам, потому что у неё лёгкие правила, которые можно объяснить за пару минут, и быстрые партии!
– Любителям компактных карточных игр, ведь в неё можно сыграть практически в любом месте, а ещё она занимает совсем мало места на полочке!
– Фанатам необычных игр на сбор сетов, ведь ваша задача не только собрать особую комбинацию, но и не дать соперникам нужную карточку для их комбинации!
✅ «Zero» ждёт вас на нашем сайте: https://vk.cc/clanyE.
На Ozon: https://vk.cc/claHEq.
На Wildberries: https://vk.cc/claHGY.
#ЗвездаНастольныеИгры#Zero#ЗвездаУжеВПродаже
🅾 Доброе утро, друзья! Понедельник — наше любимое время анонсов. И мы рады сообщить, что игра «Zero» Райнера Книции сегодня поступила в продажу!
🍩 «Zero» — это быстрая карточная игра для небольшой компании до 5 человек, которая является переизданием игры «Zero Down» 2011 года. В ней задача каждого игрока — набрать как можно меньше очков. Каждый раунд игроки получают по 9 карточек на руку, а на стол выкладывается ещё 5. В свой ход можно обменять одну карточку с руки на одну карточку со стола или спасовать. При этом каждый игрок стремится собрать раньше соперников особую комбинацию «Зеро», которая принесёт 0 очков. Если комбинация «Зеро» собрана, раунд немедленно заканчивается, и все игроки, кроме счастливчика с «Зеро», подсчитывают полученные очки. Раунд также заканчивается после второго паса, и тогда подсчёта очков не избежать никому. Партия продлится столько раундов, сколько участников за столом. Победителем станет тот, кто наберёт наименьшее количество очков!
#ЗвездаНастольныеИгры#Zero#ЗвездаУжеВПродаже
🧮📝 Друзья, началась последняя рабочая неделя этого года — время подводить итоги и строить планы на будущее. В самое ближайшее время мы поделимся ими с вами. А пока ловите небольшой анонс уходящего года! Мы издадим на русском языке новую крутую игру от Райнера Книции — «Zero»!
🅾 Это несложная карточная игра, в которую могут сыграть от 2 до 5 человек. Игровой процесс строится на обмене карточек со своей руки с карточками, лежащими на столе. Ваша задача — набрать как можно меньше очков. Игра длится столько раундов, сколько участников в партии. Каждый раунд игроки считают полученные очки, а победитель определяется по итоговой сумме. У кого очков меньше, тот и чемпион!
🌱 «Зеро» уже очень скоро отправится в печать, так что выход игры не за горами! Все подробности обязательно расскажем в следующих публикациях. Следите за нашими новостями! 😉
#ЗвездаНастольныеИгры#Zero#ЗвездаАнонс
ТВЕРЬ 30.05
Семинар ZERO ALCO
SPIRITS AND COCKTAILS при поддержке первых и пока единственный б/а спиритов DRINKSOME
Время: 13:00-15:00
Место: бар FunDuck ( адрес итак все знаете)
Продолжаем встречаться и обсуждать безалкогольную тему и другие закономерные тренды.
Давно не встречались в Твери в таком формате, так что нам есть много о чем поговорить и обсудить!
Попробуем 4 безалкогольных спирита DRINKSOME и коктейли на его основе( если ещё не пробовали), обсудим б/а тему, поделюсь своим и международным опытом и поговорим в формате вопрос-ответ!
Жду вас во вторник (30.05) в баре FunDuck.
Просьба записаться в комментарии к посту - достаточно цифрой указать кол-во человек, кто прийдет на семинар с вами ( если один, то 1) , чтобы мы смогли подготовить бар и всем было видно, слышно и вкусно 🤗.
До скорой встречи!
#безалкогольныеспириты#безалкогольныекоктейли #0%vol #zero