Установить свойства виджета в 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
«Альянс деловых структур и предпринимателей стран Юго-Восточной Азии» B2BASEAN и Manila International Fashion Week (MIFW), предлагаем вам уникальную возможность принять участие в деловой миссии и коллективной экспозиции российских компаний на Московско-Манильском саммите креативных индустрий — ключевом
мероприятии 2025 года в сфере креативной экономики, объединяющем страны Юго-
Восточной Азии и Россию.
Саммит Креативных индустрий
Москва – Манила сочетает в себе элементы бизнес-форума и показа мод, создавая атмосферу, благоприятствующую установлению деловых контактов и продвижению
креативных продуктов. Гала шоу, проходящее в рамках саммита, демонстрирует новейшие технологии и инновации в сфере креативных индустрий, превращая мероприятие в настоящее зрелище.
#Creative#ASEAN
«Шахсий бренд ва бизнес Ўзбекистондаги биринчи халқаро аёллар форуми» Халқаро Пресс Клуб жамоаси томонидан чиройли ёритилибди.
Таклиф ва хамкорлик учун чексиз миннадорман.
Тўлиқ кўрсатувни кўришни тавсия қиламан!
MPA Creative Media Агентлиги барча хамкорларимизга чексиз миннадорлик билдиради.
#creative#womenpower
БИЗНЕС-САММИТ в КРЕАТИВНОЙИНДУСТРИИ: ПОЧЕМУ ИМЕННО НА ФИЛИППИНАХ?
В 2023 году объем креативной экономики Филиппин вырос до 1,72 трлн филиппинских песо (ок. 30 долларов США млрд) в общей стоимости, что составляет 7,3% от ВВП.
Филиппины стремятся увеличить свою долю на мировом рынке креативных индустрий, и России есть что предложить в сфере креативной индустрии Филиппин, а также использовать возможности для бизнеса в регионе АСЕАН.
Рынок предметов роскоши на Филиппинах растет более быстрыми темпами, чем в более развитых странах АСЕАН. Филиппины, расположенные на пересечении влияния азиатской моды и западной модной культуры, предлагают богатое сочетание стилей и традиций, что делает их настоящим плавильным котлом для творческих идей.
Являясь одной из крупнейших англоязычных стран в мире, Филиппины известны во всем мире своей открытостью различным культурам и исключительным гостеприимством. Эти качества гарантируют, что ваш бизнес на Филиппинах будет не только продуктивным, но и по настоящему теплым и запоминающимся.
#Creative#Филиппины#ASEAN
❓Что такое креативные индустрии?
✏️Креативные индустрии — это
кино🎬,
анимация💻,
музыка🎼,
архитектура🏰,
мода👗,
разработка компьютерных игр🎮,
спорт🚴🏻♀️,
туризм🗺 и т.д.
🔺В развитых экономиках сектор представлен преимущественно малыми и средними предприятиями.
📌По данным ВШЭ, креативный сектор генерирует около 3% мирового ВВП и обеспечивает работой 1% экономически активного населения планеты. Показатель России🇷🇺 — 2,4% ВВП, Бразилии🇧🇷 — 2,6%. В Китае🇨🇳 креативные индустрии приносят 4,2% ВВП.
🔗В Женском деловом альянсе БРИКС этой тематике уделяется большое внимание в рамках рабочей группы по креативным индустриям и туризму. В апреле отраслевые эксперты обсудили вопросы сотрудничества для развития предпринимательского потенциала женщин в творческом и туристическом секторах.
Подробнее: http://bricswomen.com/ru/wg-tourism-meeting
#bricswomen#creative#tourism
🇮🇩Индонезия усиливает поддержку анимации и локального IP
Министр креативной экономики Теуку Рифки Харсья заявил о приверженности правительства развитию интеллектуальной собственности (IP) в индустрии анимации, чтобы вывести локальные проекты на мировой рынок.
По словам министра, индонезийские аниматоры обладают высокой креативностью и конкурентоспособностью. Развитие локального IP позволит не только продвигать национальные проекты, но и создавать новые возможности в сфере товаров и партнерств.
Заместитель министра Ирене Умар отметила, что локальные анимационные работы могут быть представлены в общественных местах и на выставках в ключевых культурных центрах страны. Она подчеркнула важность интеграции анимации в различные сферы, что повысит ее видимость и коммерческий потенциал.
Министерство рассчитывает, что поддержка местных анимационных инициатив усилит влияние индонезийского IP на международной арене и принесет экономические и культурные преимущества.
@b2basean
#Индонезия#Creative#Анимация#ASEAN
#winkreative#creative#agency
Winkreative creative agency
Winkreative creative agency har bir brend uchun alohida kreativlik bilan yondashgan holda o'ziga xos va jozibadorlikni uyg'otuvchi ijod namunalarini yaratishadi. Buni portfoliosida joylangan ishlardan ham bilib olsa boʻladi. Agentlik mijozlarining koʻpchiligini sayyohlik va aviakompaniyalar tashkil qiladi.
Xizmatlari quyidagicha:
– strategiya;
– vizual identifikatsiya;
– bosma(print) dizayni;
– digital;
– film;
– qadoqlash dizayni;
– atrof-muhit (environment) dizayni;
– reklama.
Bosh ofisi:
🇨🇭Syurix (Zurich), Shvetsariya
Filiallari:
🇬🇧 London, Buyuk Britaniya
🇯🇵 Tokio, Yaponiya
Taniqli mijozlari:
Air Canada, Deutsche Telecom, Lexus, Loews Hotels, Louis Vuitton, Porter Airlines, St. Moritz, The Avior, The Knightsbridge Estate, Wimbledon, Swiss International Air Lines
Portfoliosi: winkreative.com/projects/
Ushbu kompaniyaning ishlarini e'tibor bilan kuzatib chiqishingizni tavsiya qilaman. Kelajakda ushbu kuzatish o'z natijasini berishi aniq, ya'ni siz ham ushbu kompaniya tomonidan tayyorlangan loyihalarni dizayniga o'xshash loyihalarga logo yoki boshqa turdagi dizaynlarini tayyorlasangiz asqotishi mumkin😉.
Telegram