Установить свойства виджета в 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
Hoy estuvimos en el entrenamiento de Golfi, una perrita K9 que se entrena para buscar personas que desaparecen en terrenos amplios, como el Ajusco.
Necesitábamos una víctima y Eddy, nuestro productor, fue elegido para el acto. ¿Nervioso? Sí, pero lo hizo muy bien... ¡tanto como Golfi!
Les dejo un poco de lo vivido ese día y esperen pronto el reportaje en nuestra señal.
¡Besos!
🧑💻#PamQuibec🌷
Día a día con🎤@RTReporteros
🐦 (X) Twitter
¡Colaboradora inagotable!
Hoy la corresponsalía de México tuvo en sus filas a una trabajadora llena de vitalidad y entusiasmo.
Se coló al estudio, dio todas sus tomas a la primera y, aunque es muy nueva frente a la cámara, mostró talento nato. 😂
¡No les cuento más!
Les dejamos besos.
🧑💻#PamQuibec🌷
Día a día con🎤@RTReporteros
🐦 (X) Twitter
¡Día mundial del teatro! 🎭
Como muchos de ustedes saben, mi corazón está dividido en dos: periodismo y teatro.
¿Dónde se entrelazan? En la esencial tarea de contar historias.
Hoy toca celebrar la magia que proponen las tablas, ya sea desde arriba o desde las butacas y decirle gracias por dejarme ser el conducto por donde muchos personajes han cobrado vida, como los que les muestro en el video...
¡Que viva el teatro!
🧑💻#PamQuibec🌷
Día a día con🎤@RTReporteros
🐦 (X) Twitter
¿Quién es su escritor favorito?
El mío, hoy, -si viviera- estaría cumpliendo 100 años. ¿Su nombre? Jaime Sabines.
De hecho, su libro vive en el buró junto a mi cama, siempre a la mano para cuando se necesite un poquito de poesía.
Es por eso que les dejo, uno de sus escritos. Nada mejor para mantener vivo a un escritor, que seguir leyendo sus letras.
Les dejo un beso
🧑💻#PamQuibec🌷
Día a día con🎤@RTReporteros
🐦 (X) Twitter
¡Arrancamos un nuevo Reporta!
Hemos estado hoy con una mujer espectacular que nos ha compartido sus tradiciones y cultura.
Sentadas en el piso, pudimos intercambiar palabras, ideas y, sobre todo... sonrisas.
Prometo contarles más.
¡Besos!
🧑💻#PamQuibec🌷
Día a día con🎤@RTReporteros
🐦 (X) Twitter
El arte de improvisar.
Ayer domingo, yo seguía de vacaciones, pero la noticia en México era histórica. Uno de los capos mas peligrosos había caído.
Estaba en la terminal de autobuses y desde ahí tocó hacer enlaces... usando lo que tenía a la mano para poder salir al aire.
Y eso. Quería enseñarles, mis "tripies" de ayer 😂
Ya para hoy, fui a comprar equipo para que saliera todo, más profesional.
Los veo al aire?
🧑💻#PamQuibec🌷
Día a día con🎤@RTReporteros
🐦 (X) Twitter
La caída de uno de los narcotraficantes más buscados del mundo ha afectado a miles de personas, que buscaban hoy tomar un autobús para viajar a diferentes destinos.
Las carreteras están bloqueadas y lo que toca es esperar a que las cosas se tranquilicen.
Mientras, nosotros en RT siempre buscaremos informarles de lo que ocurre.
Nos vemos en los informativos y espero pronto poder volver a la CDMX ))
¡Un beso!
🧑💻#PamQuibec🌷
Día a día con🎤@RTReporteros
🐦 (X) Twitter
En la foto, lo que ustedes ven a cuadro.
En el video, todo lo que pasa alrededor... y quien nos acompaña a grabar algunas veces. ❤️
¿Tienen la fortuna de tener tan buen colega en el trabajo?
¡Besos!
🧑💻#PamQuibec🌷
Día a día con 🎤@RTReporteros
🐦(X)Twitter
Son las elecciones presidenciales en Costa Rica y RT en Español está presente, haciendo la cobertura de este proceso electoral desde hace varios días.
¿Nos acompañas a lo largo de ésta jornada larga informativa?
¡Besos llenos de Pura Vida!
🧑💻#PamQuibec🌷
Día a día con🎤@RTReporteros
🐦 (X) Twitter
Secretos de televisión 📺
Antes de grabar y de salir al aire, tenemos que hacer preparativos y mantener nuestro set IMPECABLE.
Para ello, debemos hacer ciertas cosas... como las que les muestro hoy en el video.
¿Lo imaginaban? Sí, la tele no siempre es tan glamurosa como parece.
¡Besos!
🧑💻#PamQuibec🌷
Día a día con 🎤@RTReporteros
🐦(X)Twitter
Preparando el set.
Antes de salir al aire (y que ustedes puedan vernos a través de la señal de RT), en la corresponsalía pasan muchas cosas.
Acomodar luces, cámaras, ajustar encuadres, probar audio, confirmar entrevistados, escribir textos o preguntas...
Aquí un breve ejemplo de lo que fue media hora de trabajo previo, resumido en un minuto.
El reconocimiento es para este crew mexicano.
Besos!
🧑💻#PamQuibec🌷
Día a día con 🎤@RTReporteros
🐦(X)Twitter
¡Feliz Nochebuena! 🎄🎅♥️
Hoy les preparamos un reportaje desde un taller de juguetes artesanales. Acá me encontré con varios que, de niña, me hicieron muy feliz y se los quería compartir. 💕
El reportaje, claro, al aire hoy en nuestra señal y aquí el link
Que tengan una cena deliciosa junto a aquellos que más aman.
Besos navideños 🎉🍾
🧑💻#PamQuibec
Día a día con 🎤@RTReporteros
🐦(X)Twitter