Установить свойства виджета в 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
Яркий и жизнерадостный Mercedes CLA 200 есть сейчас в Major Expert.
Редчайший желтый цвет. 2019 гв. Всего 25 тыс км пробег! Один единственный хозяин. 7-и ступенчатый робот, передний привод, турбомотор на 150 лс и разгон до сотни за 8 секунд.
Космическая приборка, атмосферная подсветка, черный салон с черным потолком, - в сочетании с желтым кузовом смотрится потрясающе.
Цена - 3,485 млн руб
Менеджер Кирилл @KirStar96.
#mb
Новое поступление в Major Expert. Mercedes C-class. Немецкая классика без изъяна.
2020 гв, 100 тыс пробег. 1,5 л бензиновый мотор на 150 лс и 250 Нм, классический задний привод, 9-и ступенчатая АКПП, разгон до 100 кмч за 8,6 сек
Абсолютно чистая техническая диагностика, диски 18", салон - коричневая кожа с черным потолком (выглядит отлично).
Цена - 3,175 млн руб
Менеджер Кирилл @KirStar96
#mb
Недавно прошли новости что Mercedes купил 3% в китайской Qianli Technology - разработчике систем беспилотного вождения.
Еще у Mercedes в Китае два совместных предприятия, с BAIC - Beijing Benz, самый крупный завод Mercedes в мире, строит C-Class, E-Class, GLC, EQE, EQB, EQC и с Geely - Smart Automobile, там строят смарты.
Кроме этого в самом Mercedes китайцам принадлежат почти 20%, - BAIC Group ~9,98 %, и у Geely (через Tenaciou3 / Li ShuFu) ~9,69 %.
Можно конечно сказать, что этот Mercedes уже не тот, а VW Jetta не настоящий VW, но правда в том, что производство любого немецкого бренда в большой степени китайское тоже.
Согласен - 👍
Все равно нет - 👎
#mb
Уникальная возможность въехать в Новый Год красиво (и недорого) - Mercedes-Benz GLA.
У нас богатый выбор, больше 10 машин, 2015-2021 гв, пробеги от 39 до 129 тыс, моторы 1,3-2 л, передний и полный привод.
На видео - машина 21 года, пробег 117 тыс км, передний привод с двигателем 1,3 л на 150 лс. Цена символическая (для Mercedes) - всего 2,395 млн руб.
Идеально как первая машина в подарок любимой девушке. Такие вещи не забывают.
Подробности у Кирилла @KirStar96
#mb
Для тех, кто считает, что автомобиль это только Mercedes, и хочет сделать своей любимой женщине подарок за разумные деньги, мы подготовили 17 Mercedes-Benz GLA с небольшими пробегами.
Передний или полный привод, бензиновые моторы 1,3-2 литра, 150-211 лс, годы выпуска — 2014-2021
Цены — от 1,775 до 3,64 млн руб.
Какой бы вы не выбрали, это будет настоящий Mercedes.
Подробности +7 (495) 089-05-39
Или напрямую @mickyyy13
#mb
Простыми словами — "будущее, как его представляли в 1930-х"
Таким Mercedes сделал свое купе Vision Iconic. Стиль "возвращает душу и романтику в технологии", основан на дизайне авто и авиации начала прошлого века. Внутри стекло, латунь и бархат.
В производстве дороже — нужна фрезеровка, сложные штампы, особая технология сварки. Массовым это не станет.
Как по вашему, это красиво или вообще нет?
Это супер — 👍
Ни о чем — 👎
#mb
В Мюнхене сейчас проходит автошоу AII Mobility. Там MB показал электро GLC 2026.
Полный привод, 483 лс, разгон за 4,4 сек. Батарея 94 кВт/ч, запас хода 713 км.
В салоне огромный экран Hyperscreen диагональю 39,1 дюйма от стойки до стойки. Он работает на своей MB.OS и выглядит очень приятно.
Одобряем — 👍
Как у китайцев — 👎
#mb
MB GLE - отличный респектабельный вариант на каждый день, как для мужчины так и для прекрасной дамы.
В Major Expert на выбор 31 автомобиль, от бензинового 3 л авто 2018 года за 2,835 млн, до GLE 63 AMG 2021 гв за 17,489 млн руб.
Много дизельных 3 л машин, они прекрасны с любой точки зрения, цена +/- 6 млн руб.
Выбрать можно тут
Звоните +7 (495) 089-05-39
#mb
У новых Mercedes GLS и GLE в торпедо интегрированы цифровая приборка и два раздельных экрана, через промежутки - это называется Superscreen.
Вчера Mercedes показал салон нового C-class и у него уже не Super - а Hyperscreen, один сплошной нераздельный экран на всё торпедо. Это больше чем у любого китайского авто.
Еще у нового C-Class опционально сертифицированный веганский интерьер, ни одно живое существо при его производстве не пострадало. И он конечно электрический, как бы мы к этому не относились.
Тенденции в немецком автопроме
Мне нравятся - 👍
Я их не совсем одобряю - 👎
#mb
Mercedes GLE 450 D - идеальный выбор на каждый день. Снаружи добрый, а под капотом дизельный 3-х литровый двигатель на 381 лс и разгон до сотни за 5,6 секунд.
Полный привод, адаптивная подвеска. Внешний пакет AMG Line, диски 22".
Панорамная сдвижная крыша, черный потолок, торпедо и дверные карты отделаны иск. кожей. Подогрев всех сидений, вентиляция передних, помощь при парковке и камеры кругового обзора. Адаптивный дальний свет и проекция.
Цена - от 16,63 млн руб
Менеджер Кирилл @KirStar96.
#mb
После рестайлинга Mercedes GLS 2027 получил "облачную" подвеску. На нем опционально доступна система E-Active Body Control - она управляет подвеской, рассчитывая положение колес и кузова 1000 раз в секунду, используя 5 многоядерных процессоров.
Все автомобили с этой системой сохраняют информацию о состоянии дороги в облаке, поэтому подвеска "заранее знает" о дефектах покрытия и лежачих полицейских. Когда таких машин будет много, это будет заметно.
Еще "звезды Mercedes" в фарах и задних фонарях и огромная новая приборная панель MBUX Superscreen с тремя экранами.
Подвеска - шаг вперед - 👍
Надо пробовать - 🤝
#mb
У электрического флагмана Mercedes EQS довольно средние продажи и концерн хочет оживить ситуацию рестайлингом.
Ключевые новшества - необычное рулевое колесо и впервые у МВ электронное рулевое управление по проводам, без механической связи с колесами. Надежность обеспечена резервными системами, Mercedes испытал технологию на пробеге в 1 млн км.
Для нового руля-штурвала разработана специальная подушка безопасности, он не закрывает приборную панель и может поворачиваться только на 170° - его не нужно перехватывать при рулении.
Прогрессивно - 👍
Неудобно - 👎
#mb