Установить свойства виджета в 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
📺- SUPERAGENTE 86 -📺
Título Original: Get Smart
Género:#Comedia#DeCulto
Temporadas: 5📼
Año: 1965 - 1070
Origen: EEUU 🇺🇸
Tráiler: youtu.be/sWEvp217Tzw
Saga:Sí✅
Sinopsis:
Serie que parodia las películas de James Bond. El superagente 86 es Maxwell Smart, un chapucero agente secreto que debe cumplir misiones muy peligrosas con la ayuda de su inseparable compañera, la agente 99.
Disponible:Apple TV
@SeriesClubHD
📺 - LOS SIMPSONS - 📺
Título original: The Simpsons
Género:#Animación#Comedia#DeCulto
Temporadas: 37 📼
Año: 1989 - Presente
Origen: EEUU 🇺🇸
Tráiler:youtu.be/_h93U8jqq4E
Saga:Sí✅
Sinopsis:
La familia Simpson vive en Springfield y refleja, con humor y sátira, la vida cotidiana de la sociedad estadounidense. Homer, Marge, Bart, Lisa y Maggie protagonizan situaciones disparatadas que se han convertido en un fenómeno cultural global.
Disponible:Disney+ |TiviFy
@SeriesClubHD
📺- EL COCHE FANTÁSTICO -📺
Título original: Knight Rider
Género:#Acción#Aventura#CienciaFicción#DeCulto
Temporadas: 4📼
Año: 1982
Origen: EEUU 🇺🇸
Tráiler: youtu.be/jQfU1WIaukg
Remake:Sí✅
Sinopsis:
Famosa serie televisiva que sigue las aventuras de Michael Knight, un detective dado por muerto al que dan una nueva cara y una nueva identidad. Su misión, encomendada por la Fundación por la Ley y el Orden: luchar contra el crimen con la ayuda de un coche artificialmente inteligente y hablador con propia personalidad: K.I.T.T.
Disponible:Sky ShowTime | Movistar+
@SeriesClubHD
📺 - DEXTER - 📺
Título original: Dexter
Título Alternativo: Dexter: El Oscuro Pasajero
Género:#Suspenso#Drama#Crimen#DeCulto
Temporadas: 8 📼
Año: 2006 - 2013
Origen: EEUU 🇺🇸
Tráiler:youtu.be/t779a6O_Me0
Saga:Sí✅
Sinopsis:
Dexter Morgan, forense especializado en análisis de sangre en la policía de Miami, oculta un oscuro secreto: es un asesino en serie que solo mata a criminales. La serie explora su doble vida, sus dilemas morales y la tensión de mantener su identidad oculta.
Disponible:⌛️Netflix | Movistar+ | Claro Video | Paramount+ | Sky ShowTime
@SeriesClubHD
🎥- VIAJE A LAS ESTRELLAS -🎥
Título Original: Star Trek
Título Alternativo: Star Trek: La Serie Original
Género:#CienciaFicción#Acción#Aventura#Drama#DeCulto
Temporadas: 3 📼
Año: 1966 - 1969
Origen: EEUU 🇺🇸
Tráiler:youtu.be/h1ai_styKKM
Saga:Sí✅
Sinopsis:
El espacio: La Frontera Final. Estos son los viajes de la nave espacial Enterprise. Su misión durante los próximos 5 años: encontrar nuevos mundos. Descubrir nuevas vidas y nuevas civilizaciones... Atreverse a ir a donde nadie ha llegado antes.
Disponible:Netflix | Paramount+
@SeriesClubHD
📺 - ED, EDD Y EDDY - 📺
Título Original: Ed, Edd N Eddy
Título Alternativo: Ed, Edd Y Eddy
Género:#Animación#Comedia#Infantil#DeCulto
Temporadas: 6 📼
Año: 1999 - 2009
Origen: Canadá 🇨🇦
Tráiler:youtu.be/fGYXNxRqUmE
Sinopsis:
Tres amigos muy distintos entre sí intentan constantemente idear planes para ganar dinero y comprar caramelos. Sus ocurrencias los llevan a situaciones absurdas y divertidas en el vecindario, donde interactúan con otros niños que siempre ponen a prueba su amistad y creatividad.
Disponible:HBO Max | Movistar+
@SeriesClubHD
📺 - TRAILER PARK BOYS - 📺
Título original: Trailer Park Boys
Título Alternativo: Chicos Del Parque De Caravanas
Género:#Comedia#DeCulto#Mockumentary
Temporadas: 12 📼
Año: 2001 - 2018
Origen: Canadá 🇨🇦
Tráiler:youtu.be/p3i1RyomPqw
Saga:Sí✅
Sinopsis:
Ricky, Julian y Bubbles viven en un parque de caravanas en Nueva Escocia. A través de un falso documental, se narran sus intentos fallidos de enriquecerse mediante planes absurdos, siempre perseguidos por la policía y envueltos en situaciones disparatadas.
Disponible:Netflix
@SeriesClubHD
📺- EXPEDIENTES SECRETOS X -📺
Título original: The X Files
Título alternativo: Expediente X
Género:#Crimen#Drama#Misterio#Suspenso#CienciaFicción#Fantasía#DeCulto
Temporadas:11
Año: 1993 📼
Origen: EEUU 🇺🇸 | Canadá 🇨🇦
Tráiler:youtu.be/Xcf44Nit7_A
Sinopsis:
Dos agentes del FBI, el creyente Fox Mulder y la escéptica Dana Scully investigan lo extraño e inexplicable mientras que fuerzas oscuras impiden sus esfuerzos.
Disponible:Prime Video | Star+
@SeriesClubHD