Установить свойства виджета в 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
До старта крупнейшей транспортно-логистической выставки Центральной Азии — TransLogistica Kazakhstan 2025 — остаются считаные часы.
Сегодня в Алматы, в павильонах КЦДС «Атакент», кипит финальная подготовка: монтируются стенды, оттачиваются детали экспозиций. Завтра здесь откроются двери для тысяч специалистов, чтобы начались деловые переговоры, презентации и встречи, которые определят новые направления развития отрасли.
С 30 сентября по 2 октября на одной площадке соберутся более 300 компаний из 21 страны, чтобы представить современные технологии, инновационные решения и международный опыт.
Выставка обещает стать главным местом для поиска партнёров, обмена знаниями и знакомства с новыми маршрутами.
Помимо экспонeнтов выставка прeдставит насыщeннуюдeловую программу. Вас ждут отраслeвыe конфeрeнции, сeминары и прeзeнтации компаний-участников — Аспан Карагай Машинери, Складскиe Тeхнологии, Даобит, EMEX, SIGIS и многих других. Ключевые мероприятия деловой программы:
1 октября 10:30–13:30 – IV Конференция «Рынок складской логистики в Казахстане» 9 павильон, 2 этаж
14:00–17:00 – II Конференция «Перевозкакрупногабаритных и тяжеловесных грузов BreakBulkKazakhstan»
9 павильон, 2 этаж
2 октября 11:00–12:30 – Expert Talks: Итоги Транспортной Недели Казахстана 9 павильон, 2 этаж
📍 Место проведения: КЦДС «Атакент», павильоны 9, 10, 11
🗓 Даты: 30 сентября – 2 октября
⏰ Время работы:
• 30 сентября — 10:00–18:00
• 1 октября — 10:00–18:00
• 2 октября — 10:00–16:00
Как стать частью события?
Зарегистрироваться и получить билет на выставку можно онлайн: https://translogistica.kz/ru/posetitelyam/poluchite-bilet-na-vystavku?promo=TRAN25ARFC
Следите за обновлением и актуальной программой выставки на официальном сайте события и соцсетях.
www.translogistica.kz
@ translogistica_kz
#TransLogistica2025
#ТранспортнаяВыставка
#ЛогистикаКазахстан
#АлматыСобытия
#НовыйШелковыйПуть
TransLogistica Kazakhstan 2025 - транспортная дипломатия и новые возможности
30 сентября – 2 октября 2025 года, Алматы
В рамках Транспортной недели Казахстана пройдет главное событие отрасли - TransLogistica Kazakhstan 2025. Это не просто выставка, а стратегическая площадка транспортной дипломатии, где встречаются государства, бизнес и международные организации.
Здесь заключаются партнерства, обсуждаются новые маршруты, презентуются технологии и укрепляется позиция Казахстана как транзитного хаба Евразии.
Расписание деловых мероприятий
30 сентября
VII Международный бизнес-форум New Silk Way
1 октября
IV Конференция Рынок складской логистики в Казахстане
II Конференция по перевозке крупногабаритных и тяжеловесных грузов BreakBulk Kazakhstan
2 октября
Expert Talks: Итоги Транспортной недели Казахстана
Место встречи профессионалов, новых идей и стратегических решений для всей транспортно-логистической отрасли региона.
Ассоциация казахстанских грузовых железнодорожных перевозчиков традиционно принимает участие в ключевых отраслевых мероприятиях, и TransLogistica Kazakhstan 2025 - одно из них. Это пространство для обсуждения приоритетов, обмена опытом и укрепления партнерских связей.
Если вы хотите быть в курсе новых трендов и решений в транспортно-логистической отрасли - это событие станет площадкой для встреч, идей и диалога.
Как стать частью события?
Зарегистрироваться и получить билет на выставку можно онлайн: https://translogistica.kz/ru/posetitelyam/poluchite-bilet-na-vystavku?promo=TRAN25ARFC
Следите за обновлением и актуальной программой выставки на официальном сайте события и соцсетях.
www.translogistica.kz
@ translogistica_kz
#TransLogistica2025
#ТранспортнаяВыставка
#ЛогистикаКазахстан
#АлматыСобытия
#НовыйШелковыйПуть
С 11 по 13 ноября Ташкент стал центром обсуждения будущего транспорта Центральной Азии
На выставке TransLogistica Uzbekistan 2025 президенты Казахстана и Узбекистана дали старт семи совместным проектам на $1,2 млрд, среди которых - ключевой хаб Silkway Central Asia.
🇰🇿🇺🇿 Новый логистический центр, реализуемый PTC Holding и Uzbekistan Temir Yullari, станет точкой притяжения транзитных потоков и важным звеном Среднего коридора, связывающего Казахстан, Узбекистан и глобальные рынки.
💡 В центре внимания также - цифровизация железнодорожных перевозок.
Совместные решения компаний «Даобит» и «АПСУ», а также международная система «RailWagon Location» демонстрируют, как технологии управления ставками, заявками и вагонным парком превращают транспортную отрасль в интеллектуальную экосистему.
📊 Сегодня инфраструктура - это не только бетон и рельсы. Это данные, скорость и прозрачность.
Казахстан и Узбекистан формируют новую цифровую карту логистики региона.
📺 Не пропустите!
Пятница, 21:00, программа «Транспорт и логистика» с Рамией Сараевой на Atameken Business.
#ТранспортИЛогистика#AtamekenBusiness#SilkwayCentralAsia#PTCHolding#TransLogistica2025#ЖелезнодорожнаяЛогистика#СреднийКоридор#КазахстанУзбекистан#ЦифроваяЛогистика#ИнфраструктураБудущего