Установить свойства виджета в 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
Почему у двигателей Boeing 777X такой большой диаметр?
Уверен, что многое задавались вопросом, почему GE9X настолько большие? Даже среди авиационных гигантов 777X выделяется благодаря своим GE9X - крупнейшим коммерческим авиадвигателям из когда-либо созданных.
📌У 777X такие большие двигатели, потому что самолету требуется мощная, экономичная и надежная силовая установка для поддержки его размеров и дальности при соблюдении современных стандартов эффективности и шума.
GE9X - самый мощный сертифицированный коммерческий двигатель. Диаметр вентилятора составляет 3,4 метра (с гондолой 4 метра), что шире фюзеляжа Boeing 737! Степень двухконтурности 10:1 и тяга до 110 000 фунтов позволяют 😎 выполнять дальнемагистральные полеты с максимальной эффективностью.
🔠777X имеет максимальную взлетную массу свыше 775 000 фунтов. Для подъема такой массы на маршрутах вроде Дубай - Лос-Анджелес требуется огромная тяга, поэтому столько огромные двигатели обеспечивают
⏺Необходимую тягу свыше 100 000 фунтов
⏺Высокую топливную эффективность благодаря степени двухконтурности 10:1
⏺Сниженный шум за счет медленного вращения большого вентилятора
⏺На 10% меньший расход топлива по сравнению с предшественником
💬Двигатель использует передовые технологии: керамические композиты, 3D-печатные детали и композитные лопасти, что снижает вес при увеличенной прочности.
⬅️ Огромный размер GE9X отражает потребности в дальнемагистральном самолете, соответствующем экологическим стандартам 21 века. Эти массивные двигатели символизируют прогресс авиационной инженерии в стремлении к более чистым, тихим и дальним полетам.
Лёгкое небо
#aviation#777X#GE9X
😎Boeing 777X — широкофюзеляжный двухдвигательный пассажирский самолёт производства корпорации «Боинг» (Boeing), спроектированный на основе Boeing 777
Первый полет состоялся 25 января 2020 года
✈️Композитное крыло со складывающимися законцовками. Длина складных законцовок — 3,5 м, они имеют электропривод складывания.
✈️Увеличенная ширина салона благодаря более тонким стенам кабины и улучшенной изоляции, что позволяет использовать сиденья шириной 46 см.
✈️Двигатели General Electric GE9X. У двигателя увеличенный диаметр вентилятора (340 см против 310 и 330 см у разных версий GE90) и большая степень двухконтурности (10 против 9).
⏺Варианты:
Программа 777X была запущена в ноябре 2013 года для разработки двух вариантов:
➡️777-8 — вместимость 384 пассажира, дальность полёта — 16 170 км.
➡️777-9 — 426 пассажиров, дальность — 13 500 км.
❓Испытания:
В августе 2024 года лётные испытания самолёта 777X были приостановлены после обнаружения проблем с тяговыми рычагами управления двигателем GE9X. 16 января 2025 года Boeing возобновил испытания.
По состоянию на октябрь 2025 года Boeing ожидает, что первый самолёт будет поставлен в 2027 году.
🧳По состоянию на октябрь 2025 года на пассажирскую и грузовую версии 777X поступило 565 заказов от 12 заказчиков.
📍В ноябре 2025 года авиакомпания Emirates разместила заказ на 65 дополнительных самолётов Boeing 777-9 стоимостью 38 млрд долларов. Авиакомпания рассчитывает получить первые самолёты 777-9 во втором квартале 2027 года.
Лёгкое Небо
#boeing#777x#news#emirates
🇦🇪 Emirates заказала дополнительные 65 Boeing 777X на 38 миллиардов долларов
#DubaiAirShowстартовал, и Emirates анонсировала крупнейший заказ на самолёты Boeing за последние годы, подписав контракт на 65 дополнительных Boeing 777-9 на сумму 38 млрд долларов.
📌С учётом нового соглашения общее количество заказанных Emirates самолётов Boeing достигло 315 самолётов (из них на модель 777X приходится 280 единиц).
⏺Для Emirates это часть долгосрочной стратегии обновления флота и синхронизации с программами развития Дубая.
⏺Также заказано 130 дополнительных GE9X, их общее количество достигло 540 штук. Это делает Emirates крупнейшим покупателем силовых установок GE для семейства 777X.
⏺Emirates остаётся крупнейшим оператором Boeing 777 в мире: в её флоте сейчас находится 119 Boeing 777-300ER, 10 Boeing 777-200LR и 11 грузовых Boeing 777.
Лёгкое небо
#aviation#DAS25#777X#Emirates
На #DubaiAirShow2025 Boeing выбивается в лидеры
📌Как многие и предполагали ещё до открытия Dubai Airshow 2025, выставка стала очередным местом напряжённой конкуренции между Boeing и Airbus.
⏺Однако никто не ожидал, что Boeing сразу вырвется вперёд, опередив на старте своего европейского конкурента, который, как считалось, был фаворитом на #DAS25
⏺В первый же день салона произошло неожиданное событие: Emirates объявила о заказе 65 дополнительных 777X на общую сумму 38 миллиардов долларов.
С учётом этого заказа общий портфель Emirates у Boeing составляет 315 широкофюзеляжных самолётов. В него входят 270 Boeing 777X, 10 грузовых 777F и 35 единиц 787.
Лёгкое небо
#Airbus#Boeing#777X#A350#Emirates