Установить свойства виджета в 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
🏂Snowboard
Un snowboarder olímpico, en busca y captura por tráfico de cocaína y por asesinato múltiple#Snowboard
El FBI, agencia federal de Estados Unidos, ha emitido una orden de busca y captura sobre Ryan James Wedding, snowboarder canadiense de 43 años, al que se le acusa de tráfico de drogas y el asesinato de cuatro personas. El organismo de seguridad ha ofrecido una recompensa de 50.000 dólares a cualquier ciudadano que pueda aportar información del paradero del norteamericano.
El atleta, que participó en los Juegos Olímpicos de Invierno de 2002, celebrados en Utah, Estados Unidos, habría organizado una red de tráfico de cocaína desde México hasta Estados Unidos, concretamente al estado de California, donde se habría distribuido las sustancias prohibidas.
Tras una redada, las fuerzas de seguridad estadounidense han confirmado que incautaron cocaína, armas, cartuchos, dinero en efectivo y más de tres millones de dólares en criptomonedas en relación con su investigación. Wedding, también habría matado a cuatro personas en Canadá como represalia por un cargamento de droga robado.
Además, el deportista ya había sido sentenciado a varios años de prisión por tráfico de drogas en 2010. Pero, tras escaparse de la justicia, habría vuelto al negocio. «Eligió convertirse en un importante narcotraficante y eligió convertirse en un asesino», aseguró este jueves Martin Estrada, fiscal de Estados Unidos en la ciudad de Los Angeles.
https://www.abc.es/deportes/snowboarder-olimpico-busca-captura-trafico-cocaina-asesinato-20241018161623-nt.html
🏆@Info288_deportes
💥Gafas de Ski y Snowboard Hawkers
Protege tus ojos con estilo en las pistas de esquí o snowboard
✅OFERTA: 60.99€
❌ Antes: 109.99€
💰Ahorras un 45%🔥
Visión clara y protección UV para disfrutar al máximo de la nieve
👉 Hazte con ellas y deslumbra en la montaña
#gafasdeski#gafasdenieve#rebajas#ofertas#snowboard
🛰️Oferta publicada en Deporte y Outdoor
💥Gafas de Esquí Findway para la Temporada de Nieve
Protección y estilo para disfrutar al máximo en la nieve
✅OFERTA: 23.82€
❌ Antes: 32.99€
💰Ahorras un 28%🔥
Visión clara, anti niebla y protección UV garantizada
👉 Equípate para la aventura blanca
#snowboard#gafasdeesqui#proteccionuv#deporte#nieve#navidad#ofertas#viral
🛰️Oferta publicada en Deporte y Outdoor
«Олимпийское панно», digital art, Doping-Pong, 2010-2011 гг. #dopingpong#digitalart#olympics#winterolympics#snowboard#figureskating#skiing#hockey#russiancontemporaryart
Как сэкономить на снаряжении, и когда лучше взять в аренду?
Сейчас покупать снаряжение для активного отдыха стало довольно накладно. А если вы занимаетесь сноубордом/лыжами, туризмом, велосипедом и т.д. - то встаёт ещё вопрос и хранения 🙈
Но вместо того, чтобы грустить, рассмотрим лайфхаки.
Сейчас реально выгодно брать снарягу в аренду, т.к. покупать новое может быть накладно. Особенно, рекомендую аренду, когда вы первый раз идёте в поход или пробуете катание на сноуборде - есть возможность оценить снаряжение, чтобы получить понимание: а нужно ли вам ходить в горы в будущем? И если нужно - какой именно рюкзак, палатку, спальник - вы хотите купить, дабы не переплачивать и не жалеть о покупке.
Поэтому я всё чаще стал рекомендовать пользоваться отличным сервисом аренды снаряжения от @kant_sport в Москве. Это удобно, т.к можно гарантировано взять качественное, чистое снаряжение за разумные деньги. К тому же сейчас в прокате доступно 150 позиций от ледорубов, спальников до велосипедов с лонгбордами. Круто, не правда ли?
Ну и наконец, даже сейчас можно купить снаряжение за отличную цену, а также использовать промокод на скидку. Напомню, что для покупателей магазина @kant_sport у меня есть промокод, он действует в магазине и сервисе. Пользуясь моим промокодом вы поддерживаете меня. Пиши в Direct, поделюсь скидкой)
#rent#outdoor#outside#sportislife#большеспортаярчежизнь#кантспорт#прокат#арендаснаряжения
#snowboard#bike#bicycle#sup#rafting#skate#alpinism#ski