Установить свойства виджета в 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
💥Leggings Under Armour Hombre UA HG Armour
Consigue el máximo rendimiento en tus entrenamientos
✅OFERTA: 23.95€
❌ Antes: 40.0€
💰Ahorras un 40%🔥
Tejido transpirable que te mantiene seco y cómodo durante toda la sesión
👉 Mejora tu rendimiento ahora
#underarmour#leggins#deporte#descuentos#rebajas#invierno#ofertas#viral
🛰️Oferta publicada en Deporte y Outdoor
Under Armour в Узбекистане официально представлен холдингом Fashion Retail Group
Under Armour — это спортивная инженерия в чистом виде.
Каждая ткань, шов и система вентиляции создаются не ради дизайна, а ради эффективности.
Фирменные технологии бренда обеспечивают возврат энергии при каждом шаге, а каждая деталь продумана в сотрудничестве с профессиональными спортсменами и научными спортивными лабораториями.
С радостью объявляем: новая коллекция HALO уже доступна в Узбекистане.
Создана для тех, кто ценит точность движений, устойчивость и технологичную лёгкость.
#UnderArmour#FRG#UnderArmourUzbekistan#HALOCollection
Telegram / Facebook / Instagram / LinkedIn
👟 ¡Miércoles de salud, deporte y organización en casa!
Hoy traemos una selección muy variada con descuentos que no puedes dejar pasar. Destacan las zapatillas Under Armour para mujer a casi mitad de precio y el tensiómetro automático OMRON, un básico para controlar la salud en casa. Si buscas orden, el organizador para 12 pares de zapatos es ideal, y para los cafeteros, la mítica cafetera italiana Orbegozo apta para inducción está tirada de precio. ¡También incluimos tecnología de red con TP-Link y cuidado facial con CeraVe! ☕🔌
👇 Selección del día:
🔥 Under Armour Zapatillas Mujer por 34,90€ (-42% dto)
🔗https://amzn.to/4cwDvgp
🔥 OMRON Tensiómetro de Brazo Automático por 23,90€ (-20% dto)
🔗https://amzn.to/41DTPab
🔥 Organizador Armario para 12 Pares de Zapatos por 13,80€ (-31% dto)
🔗https://amzn.to/3QH1fqI
🔥 CeraVe Blemish Control Gel Limpiador por 10,90€ (-28% dto)
🔗https://amzn.to/4cpqpBx
🔥 Orbegozo Cafetera Italiana Inducción por 8,60€ (-31% dto)
🔗https://amzn.to/426NRPd
🔥 TP-Link Switch Ethernet con 5 Puertos por 6,30€ (-51% dto)
🔗https://amzn.to/4tdeDBx
#UnderArmour#Salud#Hogar#OfertasAmazon#AhorroMiercoles
💥Zapatillas Under Armour Ua Charged Assert 10
Corre con estilo y comodidad este invierno
✅OFERTA: 37.97€
❌ Antes: 75.0€
💰Ahorras un 49%🔥
Diseño resistente al frío, suela con amortiguación y ajuste perfecto
👉 Renueva tus zapatillas ahora
#underarmour#zapatillasdecorrer#rebajas#deporte#running#ofertas#viral
🛰️Oferta publicada en Deporte y Outdoor
💥Diadema Deportiva Under Armour UA Performance
Potencia tu rendimiento con estilo esta Navidad
✅OFERTA: 6.95€
❌ Antes: 12.0€
💰Ahorras un 42%🔥
Mantén el cabello controlado y la transpiración alejada durante tus entrenamient
👉 Consigue la tuya ahora
#diadema#deporte#underarmour#navidad#ofertas#tendencia#viral#headband
🛰️Oferta publicada en Deporte y Outdoor
📉 ¡Jueves para equiparse y ahorrar en la cuesta de enero!
Hoy traemos una selección muy práctica: mochila Under Armour por menos de 10€ (¡corre!), botas Columbia impermeables al 50% para tus escapadas y una fiambrera eléctrica ideal para comer caliente en el trabajo y ahorrar en restaurantes. 🍱🏔️
👇 Selección del día:
🎒 Mochila de Deporte Under Armour por 9,9€ (-55% 🔥)
amzn.to/49PApCT
🥾 Zapatillas Columbia Waterproof Senderismo por 44,9€ (-50% 🔥)
amzn.to/4sTIPle
🍳 Tefal 3 Sartenes de Acero inoxidable por 59€ (-33% 🔥)
amzn.to/4jPrR3q
💊 Multicentrum Complemento Multivitamínico por 21,7€ (-35% 🔥)
amzn.to/4quVklH
🦁 LEGO Disney El Rey León: Simba por 15€ (-25% 🔥)
amzn.to/4jPHSq1
🍱 Fiambrera Eléctrica 3 En 1 Calentador por 19,9€
amzn.to/3YS14da
#RebajasEnero#Senderismo#TupperTime#UnderArmour#Chollos
📲 No te pierdas ni uno, síguenos en directo:
🔗t.me/ChollazoExpres
🔗whatsapp.com/channel/0029VbB9FRYEQIafeiqslX2F
💥Sujetador Under Armour Mujer UA HG Mid Bra
Brinda comodidad y soporte durante tus entrenamientos
✅OFERTA: 20.95€
❌ Antes: 30.0€
💰Ahorras un 30%🔥
Diseño de alto rendimiento para mayor libertad de movimiento
👉 Mejora tu entrenamiento ahora
#underarmour#modaybelleza#ofertas#tendencia#navidad#modadeportiva#mujer#sujetadores
🛰️Oferta publicada en Moda y Belleza
💥Shorts deportivos Under Armour UA Launch 7 2-in-1
Ligereza y comodidad para tus entrenamientos navideños
✅OFERTA: 27.95€
❌ Antes: 50.0€
💰Ahorras un 44%🔥
Diseño transpirable y reflectante para mayor visibilidad
👉 Haz brillar tu rendimiento esta Navidad
#shortsdeportivos#underarmour#lanzamiento#deporte#navidad#ofertas#ligeros#transpirable
🛰️Oferta publicada en Deporte y Outdoor