Установить свойства виджета в 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
👟 Nike Pegasus Trail 5 GORE-TEX
#nike
✅ Oferta: 111,99€ ❌ PVP: 159,99€
Zapatillas de trail running diseñadas específicamente para correr bajo la lluvia o en terrenos húmedos. Incorporan una membrana de GORE-TEX totalmente impermeable y la nueva espuma ReactX en la mediasuela, que ofrece un mayor retorno de energía y reduce la huella de carbono. La suela cuenta con el compuesto All Terrain Compound (ATC) para un agarre superior en superficies resbaladizas y un tobillo elevado para evitar la entrada de suciedad.
➡️https://is.gd/UdqpE1
📣 Síguenos: @compradiccion
📱Síguenos en TikTok: https://www.tiktok.com/@compradiccion
🌎compradiccion.com
👟 Nike Flex Train
#nike
✅ Oferta: 55,99€❌ PVP: 79,99€
Zapatillas Nike de hombre de la gama Flex Train, que están pensadas para hacer cualquier tipo de ejercicio.
📏 Disponible en todas las tallas.
➡️https://is.gd/Oa1zsx
📣 Síguenos: @compradiccion
📱Síguenos en TikTok: https://www.tiktok.com/@compradiccion
🌎compradiccion.com
👟Nike al mejor precio
#nike
✅ Precio: descuentos de hasta el 30%
Nike es de sobra conocida por ofrecer una amplia gama de productos. No obstante, si por algo es especialista es por ofrecer una amplia cantidad de zapatillas de todo tipo: casual, deportivas, etc. De hecho, con la llegada de la Primavera, ahora podemos encontrar hasta un 30% de descuento en una amplia selección de modelos, que abarcan desde zapatillas normales, pasando por botas de fútbol, hasta zapatillas de baloncesto.
Si te gusta un estilo concreto de Nike, con estas ofertas podrás disfrutar de descuentos en modelos Air Max, Air Jordan e incluso Mercurial, entre muchos otros. A continuación te dejamos algunos de los modelos más populares de estos momentos, pero hay muchos más en su web.
➡️Nike Mercurial Vapor 16 Elitehttps://is.gd/3Srt7s
➡️Nike Air Max 90 https://is.gd/DCxuhR
➡️Nike Air Force 1 '07 Premium "Flowers"https://is.gd/Ox1TfY
➡️Air Jordan 1 Retro High OG "Black Toe"https://is.gd/DEjWLg
📣 Síguenos: @compradiccion
📱Síguenos en TikTok: https://www.tiktok.com/@compradiccion
🌎compradiccion.com
ℹ️ Ofrecido Por Nike
👟Nike Pegasus Trail 5 GORE-TEX
#nike
✅Oferta: 111,99€❌ PVP: 159,99€
Estas zapatillas Nike para mujer tienen un diseño espectacular, que combina el negro con el verde fosforito. Están fabricadas pensando en poder correr incluso en condiciones húmedas, gracias a su suela Nike Trail All Terrain Compound, y a su parte superior GORE-TEX, que es impermeable.
📏Está disponible en todas las tallas salvo 37.5, 42.5, 44 y 44.5
➡️https://is.gd/6b1XFb
📣 Síguenos: @compradiccion
📱Síguenos en TikTok: https://www.tiktok.com/@compradiccion
🌎compradiccion.com
👟Nike Air Jordan 1 Low
#nike
✅Oferta: 90,99€❌ PVP: 129,99€
Estas zapatillas Nike para hombre cuentan con un diseño realmente llamativo, gracias a la mezcla de colores blanco, negro y gris.
📏Está disponible en todas las tallas
➡️https://is.gd/NNlz6w
📣 Síguenos: @compradiccion
📱Síguenos en TikTok: https://www.tiktok.com/@compradiccion
🌎compradiccion.com
👟Nike lo apuesta todo a la gama AirMax
#nike
✅Precio: desde 109,99€
Nike es de sobra conocida por ofrecer una amplia gama de productos. Si el mes pasado la marca deportiva apostó fuerte por la vuelta a lo retro, durante este mes de marzo quiere darle la bienvenida a la primavera con su gama AirMax, con un total de casi 180 productos. No obstante, la compañía también destaca por contar con zapatillas, ropa y complementos de todo tipo.
En el caso de que busquemos algo de la gama AirMax, ahora mismo tenemos tanto las Nike Air Max Plus como las Nike Air Max 90 Premium, que combinan ese diseño retro que mencionábamos antes con el estilo actual. En el caso de que queramos algo más "casual", las Nike Air Force 1 '07 siguen siendo una opción fantástica. Y si lo que queremos es un accesorio, la mochila Nike Utility Speed es un modelo muy completo.
➡️Nike Air Max Plushttps://is.gd/0aS8Np
➡️Nike Air Max 90 Premiumhttps://is.gd/8Qb0bO
➡️Nike Air Force 1 '07https://is.gd/XPIb2j
➡️Nike Utility Speedhttps://is.gd/orgcvn
📣 Síguenos: @compradiccion
📱Síguenos en TikTok: https://www.tiktok.com/@compradiccion
🌎compradiccion.com
ℹ️ Ofrecido Por Nike
👟Nike apuesta por lo retro
#nike
✅Precio: desde 109,99€
Nike es consciente de que en este 2026 lo retro vuelvo a estar de moda. Por esa razón, la marca ha lanzado varios modelos de zapatillas ideales para los que busquen modelos con los que volver a esos diseños que fueron tan característicos al principio de los 2000. Podemos encontrar muchísimos modelos, como las Nike Shox TL que apuestan por una suela con muelles que en su momento causaron sensación. O también tenemos las Nike P-6000, que apuestan por una apariencia de malla transpirable mucho más clásicas.
➡️Nike Shox TLhttps://is.gd/Y5fsLY
➡️Nike P-6000https://is.gd/rigfB8
➡️Nike Spizike Lowhttps://is.gd/IlDZsY
➡️Nike Air Max Moto 2Khttps://is.gd/CJPB30
📣 Síguenos: @compradiccion
📱Síguenos en TikTok: https://www.tiktok.com/@compradiccion
🌎compradiccion.com
ℹ️ Ofrecido Por Nike