Установить свойства виджета в 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
🚢VLCC: вторичный рынок на пике десятилетия при рекордном фрахте.
По данным Signal Ocean Ltd. (Week 09, 2026), цены на VLCC на вторичном рынке достигли максимумов за 10 лет.
Пятилетние суда оцениваются выше $120 млн (+17% г/г), десятилетние — свыше $100 млн (+20% г/г).
Фрахтовая конъюнктура остаётся экстремально сильной: маршрут TD3C превышает $200 000/сутки (+440% г/г), индекс BDTI обновил исторический максимум.
В «чистом» сегменте MR USG–Continent вырос на 530% г/г; ставки танкеров типа LR2 и LR1 прибавили около 100% и 80% соответственно.
Спотовое предложение сокращается: доступность танкеров VLCC на TD3 (AG) снизилась на 27% н/н, на TD15 (WAF–China) — на 45% н/н; SuezmaxTD20 (WAF–Europe) — на 30% ниже среднего за 3 месяца.
При этом тонно-мильный спрос на VLCC демонстрирует краткосрочное ослабление н/н на фоне уже экстремальных доходов.
Переоценка активов сопровождается сужением «возрастного дисконта»: разрыв между 5- и 10-летними судами сократился с 25% до 20%.
Покупатели всё активнее рассматривают средневозрастной тоннаж, рассчитывая на сохранение высоких доходов.
С 2027 года усиливаются риски предложения: поставки танкеров типа VLCCв 2027–2028 гг. превысят 20% действующего флота (69 и 70 судов соответственно).
Вопрос устойчивости ралли будет зависеть от способности рынка абсорбировать новые мощности на фоне геополитических рисков (включая Ормуз) и трансформации торговых потоков.
📌Signal Ocean Ltd. — британская аналитическая компания, основанная в 2018 году, специализируется на данных и цифровой аналитике фрахтовых рынков.
Компания является частной и принадлежит основателям и венчурным инвесторам.
#VLCC#TankerMarket#SecondHand#FreightRates#ShippingCycle
🚢Глобальный флот требует 46 000 новых судов: цикл судостроения далёк от пика.
Мировой рынок судостроения сохраняет высокий потенциал роста, несмотря на уже рекордный объём заказов.
По оценке Arrow Shipbroking, глобальному флоту потребуется около 46 000 новых судов для обновления и удовлетворения спроса.
При этом текущий портфель заказов уже превышает 180 млн CGT, что соответствует уровням суперцикла прошлых десятилетий.
🔹рынок далёк от насыщения — пик заказов ожидается не ранее середины 2030-х годов,
🔹основным драйвером остаётся замещение стареющего флота и экологические требования,
🔹Китай продолжит доминировать в судостроении, усиливая глобальную производственную базу,
🔹спрос поддерживается структурными факторами — декарбонизация, изменение торговых маршрутов и рост тоннажа.
Для судовладельцев это означает формирование долгосрочного инвестиционного цикла, где конкурентоспособность будет определяться доступом к финансированию и технологиям.
Рынок постепенно разделяется на два уровня: крупные игроки с доступом к капиталу и меньшие участники, ограниченные в возможностях обновления флота.
📌Arrow Shipbroking Group - основана в 2014 г, как частная международная брокерская компания, специализирующаяся на рынках балкерного флота и судостроения. Компания является частной и принадлежит партнёрам-основателям.
#Shipbuilding#Newbuildings#ShippingCycle#DryBulk#MaritimeMarkets
🚢MSI: рынок судоходства - сильные доходы, но растущие циклические риски.
По оценке Maritime Strategies International (MSI), доходность в танкерном и сухогрузном сегментах остаётся повышенной, тогда как контейнерный рынок стабилизировался после волатильного цикла 2021–2023 годов.
Секторные прибыли (индекс с 2023 = 100) показывают лидерство танкеров, при поддержке высоких фрахтов и ограниченного предложения. Акции судоходных компаний демонстрируют восстановление, однако динамика различается по сегментам.
Новые заказы на верфях, как доля действующего флота, остаются наиболее значительными в контейнерном сегменте (особенно крупнотоннажные >7,6k TEU), тогда как у танкеров показатели более умеренные.
При этом доля судов старше 20 лет остаётся заметной в танкерном и балкерном флотах, создавая потенциал для утилизации.
Прогноз чистого прироста флота указывает на ускорение поставок в 2026–2027 гг., особенно в контейнерном сегменте, что усиливает риск профицита.
MSI ожидает постепенную нормализацию годовых TC-ставок и коррекцию цен 5-летних судов после пиковых уровней.
Текущая конфигурация рынка характеризуется сочетанием сильной спотовой конъюнктуры и нарастающего давления со стороны предложения. Ключевым фактором устойчивости цикла станет баланс между поставками новостроя и скоростью списания старого тоннажа.
📌Maritime Strategies International (MSI) — британская аналитическая и консалтинговая компания, основанная в 1987 году, специализируется на стратегическом анализе мировых судоходных рынков. Компания является частной и принадлежит партнёрам-основателям.
#ShippingCycle#MSI#Orderbook#TankerMarket#DryBulk
🚢Danish Ship Finance прогнозирует снижение ставок и стоимости судов.
Копенгагенский кредитор Danish Ship Finance ожидает постепенную нормализацию судоходных рынков и снижение фрахтовых ставок в ключевых сегментах.
По оценке компании, в ближайший период усилится расхождение динамики между различными классами флота, при этом текущие уровни доходности в ряде сегментов не являются устойчивыми. Ослабление ставок может повлечь коррекцию стоимости судов, особенно в классах с крупным портфелем заказов.
Одновременно банк рассматривает предстоящую фазу как возможность для расширения финансирования с фокусом на качественные активы, умеренную долговую нагрузку и долгосрочные чартерные покрытия.
Для рынка это сигнал о переходе от фазы перегрева к более сбалансированной конъюнктуре, где ключевыми факторами станут дисциплина капитала, возраст флота и доступ к финансированию.
📌Danish Ship Finance A/S - датская специализированная финансовая компания, основанная в 1961 г, предоставляет кредиты судоходным компаниям по всему миру. Компания принадлежит группе датских банков и инвесторов.
#ShippingFinance#FreightMarket#VesselValues#DanishShipFinance#ShippingCycle