Установить свойства виджета в 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
👋🏻🤍✨🌱 Bienvenido marzo, con M de Mujer 🥳
🥳 Muchas felicidades 🎊
para todos los
♓ Piscis 🐟 y ♈ Aries 🐐
que cumplen
años este mes
Acá les dejamos una ✨#frase motivacional✨🤲💖👇🏻👇👇🏼👇🏽👇🏾👇🏿
No hay camino para la paz ☮️ la paz es el camino 🤍🕊️🌿
🖋️Gandhi
Disfruta del resto de las fotos en este enlace 👇🏻
https://www.instagram.com/p/C3-rbOdrHW7/?igsh=MXExZmNuNWcwemptdg==
👁 ¿Salvará vidas ChatGPT?
El CEO de OpenAI, Sam Altman, mencionó en una nueva entrevista con Tucker Carlson que ChatGPT debería comunicarse con los padres de adolescentes que le hablen al bot sobre pensamientos suicidas. Y si eso no es posible, reportarlo a las autoridades ⤴️
Cada semana, 15,000 personas se quitan la vida. Dado que el 10% de la población mundial usa ChatGPT, el bot podría convencer a 1,500 personas de no hacerlo. "Probablemente no salvamos sus vidas", dice Altman.
Aun así, él cree que las conversaciones de las personas con la IA deberían ser privadas y protegidas de la misma manera que la confidencialidad médico-paciente o abogado-cliente.
➡️ Puedes ver la entrevista completa aquí.
¿Deberían las autoridades tener acceso a los chats de la IA?
❤️ — no, es personal
🔥 — sí, en algunos casos
🤣 — ¡de todos modos ya leen todo!
#entrevista#frase@hiaimediaes
Hola 👋🏻🤍✨🌱 Bienvenido marzo, que llega con nuestro día favorito de la semana 🤭 ¡siii! día de Reel 🥳👇
https://www.instagram.com/reel/CakG_R5FyiZ/?utm_medium=copy_link
#reels
🥳Muchas felicidades🎊
para todos los
♓Piscis🐟 y ♈Aries🐐
que cumplen
años este mes
Acá les dejamos una ✨#frase motivacional✨🤲💖👇🏻👇🏻👇👇👇🏼👇🏼👇🏽👇🏽👇🏾👇🏾👇🏿👇🏿
No hay camino para la paz ☮️ la paz es el camino 🤍🕊️🌿
🖋️Gandhi
🔠🔠🔠🔠🔠🔠🔠🔠🔠🔠
⭐️
🔔
🔠🔠🔠🔠🔠🔠🅱️🔠🔠
🦌
🎅
➡️Descubre aquí los últimos diseños que hice para navidad
🎄
Muchas felicidades para todos los🐎 Sagitario ♐ y 🐐 Capricornio ♑ que cumplen años este mes
Recuerden que si hacen un pedido en su cumpleaños reciben un DESCUENTO 🎂🎉
Acá les dejamos una ✨#frase motivacional💖👇🏻👇👇🏼👇🏽👇🏾👇🏿
«El mejor momento del día es ahora»
✒️ Pierre Bonnard
¡Feliz inicio de mes!
⛈️☀️🌧️😌#undiaalavez
🍂🍁 Bienvenido #noviembre🍁🍂
🥳 Muchas felicidades 🎊
para todos los
♏ Escorpio 🦂
y
♐ Sagitario 🐎
que cumplen
años este mes
Acá les dejamos una ✨#frase motivacional✨🤲💖
👇🏻👇🏻👇👇👇🏼👇🏼👇🏽👇🏽👇🏾👇🏾👇🏿👇🏿
Cada día es un nuevo comienzo...
... un día a la vez...
☃️❄️ Bienvenido #febrero❄️☃️
🥳 Muchas felicidades 🎊
para todos los
♒ Acuario 🌊 y ♓ Piscis
que cumplen
años este mes
☝🏻Acá les dejamos una ✨#frase motivacional✨🤲💖
☃️❄️ Bienvenido #febrero❄️☃️
🥳 Muchas felicidades 🎊
para todos los
♒ Acuario 🌊 y ♓ Piscis
que cumplen
años este mes
☝🏻Acá les dejamos una ✨#frase motivacional✨🤲💖
Recuerden que si hacen un pedido en su cumpleaños reciben un DESCUENTO 🎂
Y con este sorteo de fidelidad 🤜🤛, solo para clientes y en agradecimiento por su apoyo estos años, damos inicio al mes de febrero.
☃️❄️ Bienvenido #febrero❄️☃️
🥳 Muchas felicidades 🎊
para todos los
♒ Acuario 🌊 y ♓ Piscis
que cumplen
años este mes
☝🏻Acá les dejamos una ✨#frase motivacional✨🤲💖
🫐☃️❄️ Bienvenido #enero❄️☃️🫐
🥳 Muchas felicidades 🎊
para todos los
♑ Capricornio 🐐
y
♒ Acuario 🌊
que cumplen
años este mes
Acá les dejamos una ✨#frase motivacional✨🤲💖👇🏻👇👇🏼👇🏽👇🏾👇🏿
No siempre recibes lo que das, pero siempre das lo que eres, y eso es tu esencia
🎄🫐☃️❄️ Bienvenido #diciembre❄️☃️🫐🎄
🥳 Muchas felicidades 🎊
para todos los
♐Sagitario🐎
y
♑Capricornio🐐
que cumplen
años este mes
Acá les dejamos una ✨#frase motivacional✨🤲💖👇🏻👇🏻👇👇👇🏼👇🏼👇🏽👇🏽👇🏾👇🏾👇🏿👇🏿
“No hay camino a la felicidad. La felicidad es el camino”
🖋️Thich Nhat Hanh
🍂🍁 Bienvenido #septiembre🍁🍂
🥳 Muchas felicidades 🥳
para todos los
♍ Virgo 😇
y
♎ Libra ⚖️
que cumplen
años este mes
Acá les dejamos una ✨#frase motivacional✨ para empezar el mes 🤲
📝👇🏻👇👇🏽👇🏾👇🏿
Si te equivocas, enhorabuena, es porque tú si lo has intentado
🌹🌼 Bienvenido #marzo🌻🌺
🥳 Muchas felicidades 🎊
para todos los
♓ Piscis y ♈ Aries
que cumplen
años este mes
Acá les dejamos una ✨#frase motivacional✨🤲💖
Si tienes el poder de hacer feliz a alguien, hazlo. El mundo necesita más de eso.
Y recuerden que si hacen un pedido en su cumpleaños reciben un DESCUENTO de hasta el 10% 🎂