Установить свойства виджета в 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
🚢Sinopec смещает фокус на экспорт на фоне снижения загрузки НПЗ.
Китайская нефтехимическая группа Sinopec фиксирует снижение загрузки перерабатывающих мощностей в I-м квартале 2026 г, одновременно усиливая экспорт химической продукции.
Коэффициент загрузки НПЗ снизился до 83% (-7,6 п.п. г/г), что связано с перебоями поставок сырья на фоне конфликта на Ближнем Востоке.
Основным фактором выступает ограничение потоков через пролив Ормуз (Strait of Hormuz), через который проходит около 20% мировых поставок нефти и газа, что привело к дефициту сырья для азиатских переработчиков и снижению маржи переработки, несмотря на локальный рост цен на нефтепродукты.
В ответ Sinopec переориентирует стратегию на экспорт: ожидается рост поставок химической продукции на 26% до 3,65 млн тонн в 2026 г. Компания также активно использует государственные механизмы поддержки, включая доступ к коммерческим запасам нефти и экспортные квоты.
Экспорт нефтепродуктов остаётся значительным (4,32 млн тонн в I-м квартале), при этом внутренние ограничения на экспорт топлива в Китае подчёркивают приоритет обеспечения внутреннего рынка. Дополнительным негативным фактором стали убытки в СПГ-сегменте из-за роста спотовых закупок и перебоев поставок по долгосрочным контрактам.
Стратегия Sinopec отражает адаптацию крупнейших переработчиков к нестабильности поставок: диверсификация сырья и акцент на экспорт позволяют компенсировать снижение внутренней загрузки и поддерживать финансовые показатели.
📌Sinopec — основана в 2000 году, крупнейшая нефтеперерабатывающая компания мира по мощности, государственная компания КНР.
#oil#refining#China#energy#shipping
🚢Азиатские НПЗ сокращают загрузку из-за перебоев поставок нефти из Персидского залива.
Нефтеперерабатывающие заводы Азии, зависимые от ближневосточной нефти, могут сократить производство из-за перебоев поставок после эскалации конфликта США–Иран.
Транзит через Ормузский пролив, через который проходит около 20% мировой нефти, практически остановился после атак на суда.
Азия получает около 60% нефти из стран Ближнего Востока, поэтому регион наиболее уязвим.
Альтернативные поставки возможны из Бразилии, Западной Африки и США, однако время доставки превышает месяц, а фрахтовые ставки резко выросли.
Премии на бразильскую лёгкую нефть для поставки в Китай достигли $13–14 за баррель к ICE Brent против $2–3 до конфликта. Стоимость перевозки нефти танкером типа VLCC из Мексиканского залива США в Китай выросла до $22,5 млн за рейс (+30% за несколько дней).
Аналитики ожидают сокращение загрузки НПЗ на 5–20%, в отдельных случаях до 30% от проектной мощности. Некоторые китайские переработчики, включая Zhejiang Petrochemical и Fujian Refining and Petrochemical, уже начали снижать переработку.
Для морского рынка это означает рост спроса на дальние маршруты из Атлантического бассейна, усиление тонно-мильного эффекта и дальнейшее давление на ставки танкеров VLCC.
📌FGE NexantECA — международная консалтинговая компания в области энергетических рынков, образованная после объединения FGE и NexantECA. Специализируется на аналитике нефти, газа и нефтехимии; компания является частной и принадлежит партнёрам и инвесторам.
#OilMarket#VLCC#Hormuz#Refining#EnergyTrade
🚢Orlen превзошла ожидания по EBITDA на фоне сильной переработки.
Польская энергетическая группа Orlen опубликовала квартальные результаты: скорректированная EBITDA LIFO составила PLN 12,15 млрд ($3,4 млрд), превысив консенсус (PLN 11,4 млрд) несмотря на снижение на 15% г/г.
Поддержку обеспечил сильный downstream-сегмент (переработка и нефтехимия) на фоне благоприятной маржинальной среды.
Чистая прибыль за квартал — PLN 3,13 млрд, ниже ожиданий (PLN 4,8 млрд) из-за обесценивания активов на PLN 3,34 млрд, включая PLN 2,2 млрд в downstream (переработка, нефтехимия и «новая химия»). Влияние оказали и более низкие цены на нефть и газ.
Компания анонсировала капвложения PLN 36,3 млрд в 2026 году (против PLN 32,6 млрд годом ранее). Среди ключевых проектов — первая офшорная ВЭС Польши в Балтийском море и газовая электростанция в Грудзёндзе.
📌Orlen основана в 1999 году (консолидация польских НПЗ). Компания публичная (WSE); контрольный пакет принадлежит государству Польша через Министерство государственных активов.
#energy#refining#Poland#downstream#Orlen