Установить свойства виджета в 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
🚢DFDS фиксирует рост грузопотока и пассажирских перевозок в марте.
Датская паромная компания DFDS сообщила об увеличении грузовых объемов в марте 2026 года до 3,9 млн линейных метров грузов на автопалубах (+4,2% г/г).
С учетом изменений маршрутной сети рост составил около 3%, что отражает устойчивый спрос на перевозки.
Наиболее сильная динамика зафиксирована на маршрутах Северного моря и пролива Ла-Манш, где увеличился трафик между Великобританией и континентальной Европой.
На Средиземноморье объемы снизились, однако эффективность использования флота улучшилась за счет оптимизации мощностей.
Пассажирский сегмент также показал рост: количество перевезенных пассажиров увеличилось на 11,3% до 261 000. Основной вклад обеспечили маршруты через Дуврский пролив. При этом годовая динамика остается отрицательной, что указывает на продолжающуюся перестройку маршрутной сети.
С отраслевой точки зрения результаты отражают устойчивость каботажного сегмента и паромных перевозок в Европе, где грузовые потоки остаются стабильными, несмотря на макроэкономические и геополитические факторы. Оптимизация маршрутов и гибкое управление мощностями становятся ключевыми инструментами повышения эффективности.
Таким образом, DFDS демонстрирует сбалансированную модель, сочетающую стабильный грузовой бизнес с восстановлением пассажирского сегмента.
📌DFDS A/S — основана в 1866 году, публичная судоходная и логистическая компания, базируется в Дании, принадлежит институциональным инвесторам.
#ferries#shipping#logistics#Europe#DFDS
🚢DFDS фиксирует снижение прибыли при росте выручки в 2025 году.
Датская судоходно-логистическая группа DFDS опубликовала результаты за 2025 год.
Выручка за IV квартал составила DKK 7,3 млрд (+1% г/г), по итогам года — DKK 30,9 млрд (+4%).
Однако валовая операционная прибыль снизилась: в IV кв: до DKK 705 млн (−5%), за год: до DKK 3,74 млрд (−16%).
Операционная прибыль по итогам года сократилась на 65% до DKK 520 млн.
Компания отмечает разворот тенденции в IV-м квартале: Средиземноморская паромная сеть вернулась к прибыльности благодаря сокращению мощностей и новой ценовой модели. Улучшение показали также логистические подразделения в Северной Европе и на континенте. Давление сохранялось на рынке паромов через Ла-Манш.
Прогноз на 2026 г: выручка на уровне 2025 г, операционная прибыль ожидается в диапазоне DKK 800 млн – 1,1 млрд.
📌DFDS основана в 1866 году в Дании. Компания публичная (Nasdaq Copenhagen); крупнейший акционер — датский фонд Lauritzen Fonden.
Фонд был основан в 1945 году братьями Иваром Лауритценом(Ivar Lauritzen),Кнудом Лауритценом(Knud Lauritzen) и их сестрой Анной Лённе (Anna Lønne) - они передали свои доли в семейных компаниях фонду, чтобы обеспечить долгосрочное выживание бизнеса и поддержку общества.
Основная цель фонда — быть ответственным владельцем группы компаний Lauritzen (в первую очередь судоходной компании J. Lauritzen и компании DFDS), а также распределять средства на благотворительные, культурные и социальные проекты. Семья Лауритцен продолжает попечительную деятельность в фонде.
#ferries#logistics#DFDS#NordicShipping#maritimefinance
🚢DFDS фиксирует рост грузопотоков в феврале.
Датская судоходная и логистическая группа DFDS сообщила о росте грузовых перевозок в феврале. Общий объём перевозок достиг 3,5 млн линейных метров автопалуб, что на 3% больше, чем в аналогичном месяце прошлого года. С учётом изменений в маршрутной сети рост составил 1,6%.
Основной вклад внесли маршруты Северного моря, где увеличились перевозки между континентальной Европой и Великобританией.
Также рост был зафиксирован на направлениях Средиземного моря, Балтики и Гибралтарского пролива, несмотря на сокращение рейсов на отдельных линиях и неблагоприятные погодные условия.
На линии Ла-Манш объёмы перевозок выросли благодаря запуску новых сервисов на Джерси, тогда как трафик через Дуврский пролив остался примерно на уровне прошлого года.
За последние 12 месяцев общий объём грузовых перевозок составил 41,6 млн линейных метров автопалуб, что на 0,6% больше год к году.
При этом пассажирские перевозки снизились: в феврале количество пассажиров упало на 23,3% до 181 000, а за год составило около 5,1 млн человек, что ниже уровня предыдущего периода.
Компания связывает снижение пассажирского трафика с неблагоприятными погодными условиями и уменьшением числа рейсов на некоторых направлениях.
📌DFDS (Det Forenede Dampskibs-Selskab) — датская судоходная и логистическая компания, основанная в 1866 году. Компания является публичной и торгуется на Nasdaq Copenhagen, а её крупнейшими акционерами выступают институциональные инвесторы.
#DFDS#RoRoShipping#FreightTransport#EuropeanLogistics#ShortSeaShipping