Установить свойства виджета в 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
#ZIM
Человек донат отправил - а я не ответил. Нехорошо ))
👆 В общем, пока выглядит неплохо - при пробое уровня 30$ может появится сильный бычий сигнал. Потоки пока растут (но они имеют сильный циклизм).
🚢ZIM: падение ставок снизило прибыль, но компания остаётся прибыльной.
Контейнерная линия ZIM Integrated Shipping Services опубликовала финансовые результаты за IV квартал и весь 2025 год, показав заметное снижение показателей на фоне падения фрахтовых ставок и умеренного сокращения объёмов перевозок.
В IV квартале 2025 года компания перевезла 898 тыс. TEU (–8,6% г/г), при средней ставке $1 333 за TEU (–29,3%). Выручка снизилась до $1,5 млрд (–31,5%), а чистая прибыль составила $38 млн против $563 млн годом ранее.
По итогам 2025 года перевозки составили 3,7 млн TEU (–2,3%), а средняя ставка — $1 551 за TEU (–17,8%). Выручка снизилась до $6,9 млрд (–18,1%). Чистая прибыль составила $481 млн, что на 77,7% ниже результата 2024 года.
Несмотря на снижение доходности, компания сохранила положительный денежный поток ($2,3 млрд операционного cash flow) и $2 млрд свободного денежного потока, что позволило продолжить выплату дивидендов.
Руководство связывает устойчивость результатов с модернизацией флота, включая внедрение СПГ-контейнеровозов, и активным использованием цифровых решений и аналитики.
📌ZIM Integrated Shipping Services Ltd. — израильская контейнерная судоходная компания, основанная в 1945 году. Акции компании обращаются на Нью-Йоркской фондовой бирже (NYSE); компания является публичной и принадлежит институциональным и частным инвесторам.
#ContainerShipping#ZIM#FreightRates#ShippingFinance#GlobalTrade
⚓️🔥Битва гигантов за ZIM: MSC vs Hapag-Lloyd
На израильского контейнерного перевозчика претендуют сразу два мировых лидера — MSC и Hapag-Lloyd. Но если у одних путь выглядит относительно гладким, то у других — с серьезными политическими и профсоюзными барьерами.
📌Что происходит:
- Совет директоров ZIM запустил формальный процесс продажи и привлек инвестбанк для оценки предложений.
- Первичное предложение менеджмента компании было отклонено.
- До завершения сделки компания официально хранит молчание.
⚖️Почему MSC выглядит фаворитом:
- Частная структура собственности — без «чувствительных» акционеров
- Уже есть операционная синергия с ZIM на маршрутах
-Сильная финансовая позиция для крупной сделки
🚧Сложности у Hapag-Lloyd:
- В акционерах — ближневосточные суверенные фонды
- Это вызвало жесткую реакцию профсоюзов и властей Израиля
- ZIM в стране считается стратегическим активом
🛑Ключевой фактор — «золотая акция»
Государство сохраняет право вето на продажу крупного пакета:
- контроль над советом директоров и топ-менеджментом
- обязательство предоставлять флот в экстренных ситуациях
➕ Дополнительная интрига
Внутри ZIM назревает корпоративный конфликт — часть акционеров требует смены совета директоров. Годовое собрание уже перенесли, что добавляет неопределенности в момент, когда решается судьба компании.
В общем сделка выходит далеко за рамки бизнеса — здесь переплелись политика, безопасность и глобальная логистика 🌍📦
________
#ТИСЛОДЖИСТИК
#MSC
#HapagLloyd
#ZIM
#глобальныелинии
🚢Поглощение Hapag-Lloyd/ZIM усиливает доминирование Top-5 контейнерных линий.
Сделка по приобретению ZIM Integrated Shipping Services германской группой Hapag-Lloyd за $4,2 млрд отражает ускоряющуюся консолидацию в линейном судоходстве.
В случае завершения сделки объединённая компания укрепит позиции Hapag-Lloyd как 5-го по величине оператора в мире, увеличив флот примерно на 232 судна и доведя портфель заказов до 700 000 TEU, что сократит разрыв с COSCO и усилит разрыв между Top-5 и остальными участниками рынка.
Ключевые выводы:
✔️ Доля Top-5 перевозчиков уже достигает 37% мирового контейнерного флота и может приблизиться к 40% после сделки.
✔️ Масштаб становится критически важным фактором конкурентоспособности: операционная эффективность, доступ к слотам, оптимизация сети.
✔️ Перевозчики вне Top-10 теряют долю рынка и влияние.
✔️ Для Hapag-Lloyd сделка — способ защитить позиции от давления со стороны ONE и Evergreen, а также сохранить статус глобального игрока.
Особый элемент структуры — создание «New ZIM» при участии FIMI Funds для обслуживания только израильских интересов и сохранения «золотой акции» государства Израиль.
Сделка отражает новую фазу отрасли: рост происходит преимущественно через M&A и концентрацию активов, а не через органическое расширение.
📌Hapag-Lloyd основана в 1847 году (слияние Hamburg-Amerikanische Packetfahrt-Actien-Gesellschaft и Norddeutscher Lloyd в 1970 году). Крупнейшим акционером является логистическая группа Kühne Holding AG (семья Кюне). Штаб-квартира — Гамбург.
#ContainerShipping#HapagLloyd#ZIM#MaritimeMA#GlobalTrade