Установить свойства виджета в PySide можно не только через соответствующие методы и конструктор класса. Можно их изменять с помощью метода setProperty по имени.
btn = QPushButton("Click Me")
btn.setProperty("flat", True)
Это аналогично вызову
btn.setFlat(True)
Если указать несуществующее свойство, то оно просто создается
btn.setProperty("btnType", "super")
Получить его значение можно методом .property(name)
btn_type = btn.property("btnType")
Когда это может быть полезно?
▫️Можно просто хранить какие то данные в виджете и потом их доставать обратно
widget = QWidget()
widget.setProperty('my_data', 123)
print(widget.property('my_data'))
▫️ Назначая эти свойства разным виджетам можно потом отличить виджеты во время итераци по ним. Например, найти все кнопки со свойством my_data="superbtn".
Но ведь вместо кастомного свойства можно использовать objectName, будет тот же результат.
Да, но y ObjectName есть ограничение - только строки.
▫️ Если нам потребуется не просто поиск а, например, сортировка по числу, то свойства позволяют нам это сделать. Поддерживается любой тип данных
widget.setProperty('my_data', {'Key': 'value'})
widget.setProperty('order', 1)
all_widgets.sort(key=w: w.property('order'))
Но ведь Python позволяет всё вышеперечисленное сделать простым созданием атрибута у объекта
widget.order = 1
widget.my_data = 123
Да, но я думаю что не надо объяснять почему не стоит так делать. К тому же, если у виджета нет свойства то метод .property(name) вернет None, а отсутствующий атрибут выбросит исключение.
▫️ Действительно полезное применение кастомным свойствам - контроль стилей. Здесь атрибутами не обойтись, нужны именно свойства.
Дело в том, что в селекторах стилей можно указывать конкретные свойства виджетов на которые следует назначать стиль.
Просто запустите этот код
from PySide2.QtWidgets import *
if __name__ == "__main__":
app = QApplication([])
widget = QWidget(minimumWidth=300)
layout = QVBoxLayout(widget)
btn1 = QPushButton("Action 1")
btn2 = QPushButton("Action 2")
btn3 = QPushButton("Action 3", flat=True)
layout.addWidget(btn1)
layout.addWidget(btn2)
layout.addWidget(btn3)
# добавим кастомное свойство одной кнопке
btn1.setProperty("btnType", "super")
# добавляем стили
widget.setStyleSheet(
"""
QPushButton[btnType="super"] {
background-color: yellow;
color: red;
}
QPushButton[flat="true"] {
color: yellow;
}
"""
)
widget.show()
app.exec_()
С помощью селектора мы избирательно назначили стили на конкретные кнопки.
Как получить список всех кастомный свойств?
Функция получения списка кастомных свойств отличается от получения дефолтных.
def print_widget_dyn_properties(widget):
for prop_name in widget.dynamicPropertyNames():
property_name = prop_name.data().decode()
property_value = widget.property(property_name)
print(f"{property_name}: {property_value}")
#tricks#qt
В Санкт-Петербурге на легендарном ледоколе «Красин» 15 февраля отгремел День Африканской культуры с символичным названием «Лед и пламень».
Гостей и участников мероприятия приветствовали: Низами Адилханович Мамишев – заместитель председателя комитета по внешним связям Санкт-Петербурга, Петр Борисович Пунченко – советник председателя комитета по внешним связям Санкт-Петербурга, Дария Да Консейсао – режиссер, сценарист, продюсер, Сергей Чесноков – академик ПАНИ, постоянный эксперт Российско-Африканского клуба МГУ им. М.В.Ломоносова и Кристиан Уэдраого – президент #CAARB, председатель культурно-делового совета GATINGO- BF.
Африка зажгла ледокол песней «Убунту» в исполнении группы NOPOWDER, показом африканской моды, мастер-классами игры на африканских инструментах и, конечно, дегустацией африканской кухни.
Объединяйтесь, континенты, AtlasCapital 🌍 радеет за культуру, мир, дружбу и жвачку
ATLAS Capital
#БуркинаФасо.
"Африка и Русский Север"
Монтируем выставку в арт-резиденции #CAARB.
15.02.2025 вернисаж и дипломатический прием.
FR:
Burkina Faso. Nous montons l'exposition en Résidence artistique #CAARB.
15 février vernisage et réception diplomatique.
ENG:
Burkina Faso. We Mount the exhibition in art residence #CAARB .
February 15 vernisage and diplomatic reception
#GatingoArtNews
#РусскаяАртДипломатия
#CAARB
Вести из #БуркинаФасо
Российско-буркинийской Клуб дружбы и бизнеса #CAARB успешно поработал на Форуме "Экономические дни Буркина-Фасо в Москве" (октябрь 2024 г ) вместе с командой GATINGO International Association.
В продолжение достигнутых результатов на форуме, 7-8 февраля состоится Церемония в Бобо для расширения географии деятельности Клуба CAARB в западной части Буркина-Фасо.
Мероприятие состоится под патронатом нового Премьер-Министра, с участием профильных министерств, делового сообщества и представителей СМИ .
Готовим презентации и подписания соглашений о сотрудничестве.
#GatingoNews
Подписаться
Состоялось открытие арт-резиденции #CAARB & # GATINGO в Буркина-Фасо в присутствии дипломатов посольств России и #БуркинаФасо
Гости вернисажа с интересом осмотрели передвижную выставку "Африка и Русский Север"
#РусскаяАртДипломатия работает!
В неформальной обстановке встретились представители бизнеса, общественных организаций, политики, арт-деятели. Зародились идеи новых проектов и возникли договоренности конкретных партнёрских взаимодействий.
#GatingoArtNews#CAARB
#РоссияАфрика
Состоялось открытие арт-резиденции #CAARB & # GATINGO в Буркина-Фасо в присутствии дипломатов посольств России и #БуркинаФасо
Гости вернисажа с интересом осмотрели передвижную выставку "Африка и Русский Север"
#РусскаяАртДипломатия работает!
В неформальной обстановке встретились представители бизнеса, общественных организаций, политики, арт-деятели. Зародились идеи новых проектов и возникли договоренности конкретных партнёрских взаимодействий.
#GatingoArtNews#CAARB
#РоссияАфрика
#РусскаяАртДипломатия в
#БуркинаФасо
15 февраля состоится открытие арт-резиденции в Буркина-Фасо.
В программе:
Выставка "Африка и Русский Север", графика преподавателей и выпускников СПГХПА им Штиглица, живопись Петербургских художников О.Еремеевой и Э.Гизатуллиной, а также работы африканских мастеров ;
Приветственные речи представителей Посольства РФ в Уагадугу, местной префектуры, руководства #CAARB & #GATINGO, буркинийских представителей арт-сообщества;
Концерт и российско-буркинийские угощения.
#GatingoArtNews
#ArtFutureGallery
#ЦентрНароднойДипломатии
А тем временем, проект "Русская арт-дипломатия в Африке" готовится к новому путешествию, теперь уже в Буркина-Фасо (при поддержке Буркинийско-российского Клуба дружбы и бизнеса #CAARB в тесном сотрудничестве Gatingo c СПГХПА им.Штиглица).
В экспозиции " L'Afrique et le Nord Russe " будет представлена графика преподавателей и выпускников Академии Штиглица и несколько живописных полотен петербургских художников из серии "Русский Север" .
Выставка состоится в BOBO DIOULASSO во время Церемонии начала деятельности CAARB на Великом Западе Буркина-Фасо, в присутствии кабинета Министров во главе с новым премьер-министром Буркины. Затем планируем провести вернисаж в Русском доме #Уагадугу при содействии Центра народной дипломатии и лично Наталии Красовской, вице-спикера Заксобрания НСО.
Куратор и автор проекта:
Татьяна Тудвасева
#GatingoArtNews#РусскийСевер#Африка#АртДипломатияGATINGO
#Африка & #РусскийСевер
Экспозиция графических работ преподавателей и выпускников Академии Штиглица, и живописных полотен, выполненных на пленэрах петербургскими мастерами, впервые поедет Буркина-Фасо.
Русский Север для художника — это исконный центр русской культуры и могучий край первозданной красоты природы. Здесь обостряется понимание глубокой преемственности традиций культуры России, возрастает чувство историзма и интереса к вечным проблемам бытия.
Африка, равно как и Русский Север, вдохновляет художников своей многовековой самобытностью. Народы этих далеких друг от друга территорий схожи тем, что сохраняют и доносят до нас живые национальные традиции в различных сферах бытия: это и богатейшее устное народное творчество, и пронизанный поэзией и глубоким смыслом народный костюм, и местные художественные промыслы, и деревянное зодчество и свет души человеческой.
Куратор выставки и автор проекта: #ТатьянаТудвасеваПодробности тут.
#GATINGO&#CAARB#РусскаяАртДипломатияGATINGO
Подписаться
А тем временем, проект "Русская арт-дипломатия в Африке" готовится к новому путешествию, теперь уже в Буркина-Фасо (при поддержке Буркинийско-российского Клуба дружбы и бизнеса #CAARB в тесном сотрудничестве Gatingo c СПГХПА им.Штиглица).
В экспозиции " L'Afrique et le Nord Russe " будет представлена графика преподавателей и выпускников Академии Штиглица и несколько живописных полотен петербургских художников из серии "Русский Север" .
Выставка состоится в BOBO DIOULASSO во время Церемонии начала деятельности CAARB на Великом Западе Буркина-Фасо, в присутствии кабинета Министров во главе с новым премьер-министром Буркины. Затем планируем провести вернисаж в Русском доме #Уагадугу при содействии Центра народной дипломатии и лично Наталии Красовской, вице-спикера Заксобрания НСО.
Куратор и автор проекта:
Татьяна Тудвасева
#GatingoArtNews#РусскийСевер#Африка#АртДипломатияGATINGO