Установить свойства виджета в 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
📺- ÉRASE UNA VEZ... EL ESPACIO -📺
Título Original: Il était une fois... l'espace
Título Alternativo: Érase Una Vez El Espacio
Género:#Animación#Infantil
Temporadas: 1📼
Año: 1982
Origen: Francia 🇫🇷
Tráiler: dai.ly/x3wkts
Sinopsis:
Creada por Albert Barillé en los estudios Procidis y difundida por la cadena France 3 a partir de 1982. También participaron en la realización de esta serie empresas de España, Bélgica, Canadá, Italia, Japón, Noruega, Países Bajos, Suecia y Suiza. En esta serie por medio de los recursos de la ciencia ficción, se critica la intolerancia, la ignorancia y la avaricia, así como la excesiva modernización y los peligros de la robotización. En ella se recrea una posible humanidad en el año 3023.
Disponible:Filmin | A Tres Player
@SeriesClubHD
📺- ÉRASE UNA VEZ... EL HOMBRE -📺
Título Original: Il était une fois... l'Homme
Título Alternativo: Érase una Vez el Hombre
Género:#Animación#Infantil
Temporadas: 1📼
Año: 1978
Origen: Francia 🇫🇷
Tráiler: youtu.be/7uxM2mLgWhA
Saga:Sí✅
Sinopsis:
Serie de TV (1978) sobre la historia de la humanidad. Fue creada por Albert Barillé en los estudios Procidis y difundida por la cadena France 3. También participaron en la realización de esta serie las televisiones públicas y empresas de Alemania, Bélgica, Canadá, España, Israel, Italia, Japón, Noruega, Países Bajos, Suecia y Suiza. (Información extraída de Wikipedia).
Disponible:Filmin | A Tres Player
@SeriesClubHD
📺- CACHORROS FANTASMAS -📺
Título Original: Phantom Pups
Género:#Fantasía#Infantil#Comedia
Temporadas: 1 📼
Año: 2022
Origen: Canadá 🇨🇦
Tráiler: dai.ly/x8dzjd4
Sinopsis:
Un niño se muda a una casa encantada con su familia. Allí conoce a tres adorables cachorros fantasmas y trata de ayudarlos a que vuelvan a ser perros de verdad.
Disponible:Netflix
@SeriesClubHD
NUEVA SERIE
Temporada 1 - Episodios 13/13
Temporada 2 - Episodios 13/13
📽 Título: Noddy, detective en el País de los Juguetes
🔹 Año: 2016
🏳 Pais: Reino Unido
🔅 Género: #Animacion | #Infantil
✅ Nota: 6,9 IMDb
🔰 Plataforma: Netflix
📺 - EL MISTERIO DE LOS HUNTER - 📺
Título Original: Hunter Street
Género:#Aventura#Suspenso#Infantil#Comedia
Temporadas: 4 📼
Año: 2017 - 2021
Origen: Países Bajos 🇳🇱
Tráiler:youtu.be/YnqEu3wzRNw
Sinopsis:
Cinco hermanos adoptivos se embarcan en una serie de aventuras cuando sus padres desaparecen misteriosamente. Juntos deben resolver enigmas, descubrir pistas y enfrentarse a desafíos que pondrán a prueba su ingenio y unión familiar, mientras desentrañan secretos ocultos en la casa Hunter.
Disponible:Claro Video | Paramount+ | Movistar Play | Movistar+ | Pluto TV | Sky ShowTime
@SeriesClubHD
🎥- EUREKA! -🎥
Título Original: Eureka!
Género:#Animación#Aventura#Comedia#Infantil
Temporadas: 2 📡
Año: 2022 - Presente
Origen: EEUU 🇺🇸
Tráiler:youtu.be/8VwJitp1nSY
Sinopsis:
Una joven inventora diseña instrumentos y artilugios con la esperanza de hacer del mundo un lugar mejor y llevar a su comunidad prehistórica a una era más moderna.
Disponible:Disney+
@SeriesClubHD
🎥- CHIP Y DALE AL RESCATE -🎥
Título Original: Chip 'n Dale Rescue Rangers
Título Original: Chip y Chop: Guardines Rescatadores
Género:#Animación#Infantil#Aventura#Comedia
Temporadas: 3 📼
Año: 1989 - 1990
Origen: EEUU 🇺🇸
Tráiler:youtu.be/YvUtPuZOpCc
Saga:Sí✅
Sinopsis:
Serie de animación protagonizada por las valientes ardillas Chip y Chop, que acompañados de sus amigos Gadget, Zipper y Monterey recorrían el mundo en busca de aventuras, cruzándose por el camino con temibles villanos.
Disponible:Disney+
@SeriesClubHD
📺- POKÉMON -📺
Título Original: ポケットモンスター
Género:#Animación#Aventura#Fantasía#Comedia#Infantil
Temporadas: 26 📡
Año: 1997 - Presente
Origen: Japón 🇯🇵
Tráiler: youtu.be/EOf5JCcx9Zc
Saga:Sí✅
Sinopsis:
En Pueblo Paleta, todos los niños y niñas están fascinados por el mundo de los Pokémon, unas criaturas de diferentes formas y colores que cuentan con unos poderes muy especiales. Ash Ketchum es uno de ellos, un niño de 10 años que sueña con llegar a ser el mejor entrenador Pokémon del mundo, por lo que visita al profesor Oak, una autoridad en la materia. El profesor le informa que lo primero que debe hacer es escoger un Pokémon (hay más de seiscientos). Ash escoge a Pikachu.
Disponible:Netflix | A Tres Player
@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
Olaf PresentsSeason 1
📅Año 2021
🎥Dirección#HyrumOsmond
📄Guion Hyrum Osmond, Javier Ledesma, Don Dougherty
🎬Productora Walt Disney Animation Studios
🚚Distribuidora Disney+
Género#SeriedeTV#Animación#Infantil#Comedia#Cuentos
Reparto
# JoshGad (Olaf)
⏱Duración 3min.
🖥Resolución 720x400
🗣Idioma Inglés
Subtítulos Latino
Sinopsis
Cinco clásicos de Disney contados por tu muñeco de nieve favorito, Olaf.
Episodio 01 - 02 - 03 - 04 - 05 - 06
Suscripción a esta Serie 👉🏻Aquí
Índice de Animaciones 👉🏻Aquí