TGTGInsighttelegram intelligenceLIVE / telegram public index
← Python Заметки

TGINSIGHT SIMILAR POSTS

Најди сличен содржај

Изворен канал @pythonotes · Post #381 · 23 окт.

Установить свойства виджета в 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

Hashtags

Резултати

Пронајдени 1 слични објави

Пребарај: #demu

当前筛选 #demu清除筛选

Stadler разработал специальную модель пригородного поезда для линий с низким пассажиропотоком — WINK. Его отличительной особенностью является модульность (возможно питание от контактной сети, дизель-генераторной установки, аккумуляторов, а также их различные комбинации), высокая доля низкого пола (свыше 70%), а также низкая нагрузка на ось (не более 18 тонн). По назначению это аналог рельсового автобуса РА3 от ТМХ, а также Alstom Coradia Lint, Siemens Desiro Classic, Pesa Link и других. Stadler WINK позиционируется как развитие концепции GTW, но в отличие от последнего у WINK силовой модуль стоит не на одной центральной тележке, а опирается на две тележки Якобса, при этом моторными тележками являются концевые (у GTW наоборот). Такая компоновка аналогична поездам FLIRT, но у WINK всё электрооборудование сосредоточено в силовом модуле и частично на крыше, что позволило освободить пространство за кабинами машиниста и тем самым увеличить вместимость. Так, заказанные голландским перевозчиком Arriva Nederland составы имеют 135 мест для сидения, плюс 16 откидных, 2 места для пассажиров на инвалидных колясках, а также площадки для велосипедов, детских колясок и крупного багажа. По заявлению производителя, поезда WINK по типу питания возможны в пяти модификациях: ✅ Электропоезд (EMU) мощностью 1000 кВт на ободе колёс. Напряжение и род тока любой в зависимости от условий заказчика. ✅ Дизель-поезд (DMU) с максимальной мощностью 740 кВт с суперконденсаторным накопителем для повышения ускорения и экономии топлива. ✅ Дизель-электропоезд (DEMU) с питанием как от контактной сети, так и от дизель-генераторной установки. Мощность при питании от контактной сети 1000 кВт, при питании от ДГУ — 740 кВт. Возможно оборудование суперконденсаторами или аккумуляторными батареями для повышения эффективности работы поезда в автономном режиме. ✅ Электропоезд с автономным ходом (BEMU), оборудованный аккумуляторными батареями, для эксплуатации как на электрифицированных участках, так и на неэлектрифицированных линиях небольшой протяжённости. Мощность при работе от батарей заявлена также в 740 кВт, про дальность автономного хода информации нет. ✅Чистый аккумуляторный поезд (BMU) для неэлектрифицированных линий с зарядкой только на конечных станциях во время отстоя. Также в зависимости от условий заказчика возможны разные расположение дверей и планировка салона, ширина и длина вагонов, уровень пола и прочие характеристики. Кузов пассажирских вагонов изготавливается из алюминия, а силового модуля — из конструкционной стали. В настоящее время заказано 18 дизель-электропоездов WINK компанией Arriva Nederland, первые составы введены в пассажирскую эксплуатацию в прошлом году. Модификация для Нидерландов имеет длину 55,5 м, уровень пола 780 мм от УГР (под платформы 760 мм), работает от постоянного тока 1,5 кВ или двух биотопливных (гидрогенизированное растительное масло) дизелей Deutz мощностью 480 кВт каждый. Также имеются две аккумуляторные батареи общей ёмкостью 180 кВт*ч, позволяющие экономить топливо за счёт использования рекуперации, а также отключать дизель во время стоянок и маневров. Но их ёмкость недостаточна для поездной работы в автономном режиме. Примечательно, что в перспективе (после частичной электрификации линии Леуварден — Гронинген) планируется модернизация составов с демонтажем ДГУ и топливных баков и заменой их на тяговые аккумуляторные батареи, то есть превращение дизель-электропоезда в электропоезд с автономным ходом с нулевым выхлопом. В настоящее время один из составов (номер 605) дооборудован тяговыми аккумуляторами увеличенной мощности, и проводятся его испытания. Источники: https://www.railvolution.net/news/the-first-winks-in-the-netherlands https://www.railvolution.net/news/wink-tested-in-a-battery-mode https://www.stadlerrail.com/media/pdf/warr0517e_print.pdf Фото: railcolornews.com, railgazette.com и stadler. #за_низкий_пол #Stadler #WINK #DEMU #дизельэлектропоезд #Нидерланды