Установить свойства виджета в 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
💥Abrigo ONLY ONLSEDONA Gris Claro Melange
Mantente abrigada y con estilo este invierno con el abrigo ONLY ONLSEDONA en col
✅OFERTA: 20.5€
❌ Antes: 54.99€
💰Ahorras un 63%🔥
Diseño moderno, corte favorecedor y máxima calidez para los días fríos
👉 Renueva tu armario ahora
#rebajas#moda#descuentos#invierno#tendencia
🛰️Oferta publicada en Moda y Belleza
💥Kayak Koracle X1 94
Explora los ríos y lagos este invierno con el mejor kayak del mercado. Resistent
✅OFERTA: 79.95€
❌ Antes: 109.95€
💰Ahorras un 27%🔥
Vive aventuras únicas y descubre paisajes inolvidables desde el agua. No dejes p
👉 Hazte con tu kayak Koracle X1 ahora
#kayak#deporte#rebajas#ofertas#descuentos
🛰️Oferta publicada en Deporte y Outdoor
💥Kit de Manualidades Smarkids 143 Hojas de Rascar Colores
Fomenta la creatividad y diversión en casa con este set de arte para niños. Idea
✅OFERTA: 11.15€
❌ Antes: 15.98€
💰Ahorras un 30%🔥
Despierta la imaginación de los más pequeños y desarrolla sus habilidades artíst
👉 Haz que la diversión comience ahora
#rebajas#manualidades#ninos#ofertas#descuentos
🛰️Oferta publicada en Cultura y Ocio
💥SanDisk Ultra Dual Drive Go USB Type-C 128 GB Negro
Almacena y transfiere tus archivos de forma rápida y segura Compatible con Andro
✅OFERTA: 18.27€
❌ Antes: 24.99€
💰Ahorras un 27%🔥
Conectores reversibles para mayor comodidad y velocidad de hasta 400 MB/s
👉 Hazte con ella y libera espacio en tus dispositivos
#memoriausb#tecnologia#ofertas#descuentos#rebajas
🛰️Oferta publicada en Tecnología
💥Mochila Eastpak PADDED PAKR 24L - Peacock Green
Lleva tus cosas con estilo y comodidad en esta mochila Eastpak, ideal para tus a
✅OFERTA: 26.13€
❌ Antes: 55.0€
💰Ahorras un 52%🔥
Construcción resistente, amplio espacio de almacenamiento y diseño moderno que s
👉 Haz tuya esta mochila ahora
#rebajas#mochila#ofertas#descuentos#rebajasdeinvierno
🛰️Oferta publicada en Moda y Belleza
💥Memoria Kingston FURY Beast Blanco RGB XMP 16GB DDR5
Potencia tu PC con la última tecnología gamer y efectos de iluminación RGB
✅OFERTA: 84.91€
❌ Antes: 113.99€
💰Ahorras un 26%🔥
Aumenta la velocidad de tu ordenador y disfruta de una experiencia de juego flui
👉 Mejora tu setup ahora
#rebajas#memoriagamer#tecnologia#ofertas#descuentos
🛰️Oferta publicada en Tecnología
💥iPhone 16e de 128 GB - Chip A18
Potencia y elegancia en tus manos para un invierno conectado. Descubre la inteli
✅OFERTA: 539.0€
❌ Antes: 709.0€
💰Ahorras un 24%🔥
Disfruta de una autonomía sin límites y captura cada momento con la cámara Fusio
👉 Hazte con el tuyo ahora
#iphone16e#tecnologia#ofertas#descuentos#rebajas
🛰️Oferta publicada en Tecnología
💥Ratón Logitech M90 con Cable USB
Optimiza tu productividad en casa o en la oficina con este ratón ambidiestro de
✅OFERTA: 4.11€
❌ Antes: 10.99€
💰Ahorras un 63%🔥
Seguimiento óptico de 1000 dpi para un control preciso en cualquier superficie
👉 Mejora tu experiencia de uso ahora
#rebajas#raton#tecnologia#ofertas#descuentos
🛰️Oferta publicada en Tecnología
💥Monitor HP V24ie G5 de 24 pulgadas
Sumérgete en la mejor calidad de imagen con este monitor Full HD y tecnología AM
✅OFERTA: 75.99€
❌ Antes: 154.0€
💰Ahorras un 51%🔥
Imágenes nítidas, colores vivos y experiencia de juego fluida sin cortes ni dese
👉 Mejora tu setup con HP V24ie G5
#rebajas#monitor#fullhd#descuentos#ofertas
🛰️Oferta publicada en Tecnología
💥Balón de fútbol Junatoys España
Marca goles con estilo Ideal para entrenamientos y partidos
✅OFERTA: 7.21€
❌ Antes: 11.99€
💰Ahorras un 40%🔥
Diseño atractivo en colores vibrantes para destacar en la cancha
👉 Hazte con el tuyo y juega como un profesional
#balondefutbol#deporte#ofertas#descuentos#rebajas
🛰️Oferta publicada en Deporte y Outdoor
💥Pedales OMP OMPOA/1863
Optimiza el rendimiento de tu coche con estos pedales de alta calidad. Atrévete
✅OFERTA: 17.95€
❌ Antes: 22.99€
💰Ahorras un 22%🔥
Mejora la precisión y el control al conducir, garantizando una experiencia más s
👉 Renueva tus pedales ahora
#rebajas#pedalesdecoche#ofertas#descuentos#rebajasdeinvierno
🛰️Oferta publicada en Coche y Moto
💥Zapatos Geox U Dublin A para Hombre
Pisa con estilo y comodidad este invierno, no te quedes sin ellos
✅OFERTA: 48.93€
❌ Antes: 119.9€
💰Ahorras un 59%🔥
Diseño elegante, transpirables y con suela antideslizante para mayor seguridad
👉 Renueva tu look ahora
#zapatos#moda#rebajas#descuentos#viral
🛰️Oferta publicada en Moda y Belleza