Установить свойства виджета в 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
#emprendimiento
Buena noticia para el ecosistema de emprendimiento que se ha desarrollado en los últimos años en Colombia 🇨🇴 y LATAM
https://www.larepublica.co/globoeconomia/estos-son-los-mejores-paises-para-emprender-colombia-ocupa-el-puesto-25-entre-50-3340077?fbclid=IwAR1-I31jb7vNa-58t7rwSaxNaArIJ6EfBe9LB_2Fbh06P5ok9eXdkDQ9S_8
#emprendimiento
Nathalie Gómez, investigadora de Shark Tank Colombia 2021. Convocatoria del programa en su nueva temporada, los interesados que quieran hacer parte del proceso, para dar a conocer sus proyectos innovadores.
Buscan emprendimientos que tengan productos o servicios innovadores, o que la manera de presentar estos mismos sea innovadora. No importa cuanto tiempo lleven en el mercado con tal de haber incursionado en el. Todos los emprendimientos que deseen participar deben estar registrados ante la cámara de comercio, tener registro de marca y patente si es el caso.
El objetivo como programa no solo es dar la oportunidad a empresarios con negocios interesantes,de conectarse con inversionistas interesados en apalancar sus proyectos con su experiencia, contactos y apoyo económico; sino también abrir una ventana de visibilidad muy importante para todos los emprendedores que luchan por surgir en el país.
Nathalie Gómez González
3214269235
#Emprendimiento
Sencillo y poderoso concepto, el círculo de oro (que ya había publicado algo antes). Sin embargo, por su relevancia y éxito para una startup o empresa, vale la pena compartirles esta infografía.
Comparte 🔄
Apoya 👍🏼
Comenta 🗣
La productividad está en tiC 📲📈
Ejemplo de #emprendimiento de alto impacto en el sector de servicios, específicamente contadores, con el uso de tecnología.
https://forbes.co/2021/02/17/emprendedores/backstartup-consigue-us12-millones-para-su-super-despacho-de-contadores-en-linea/
#PASTELERIA#EMPRENDIMIENTO👨🏻🍳👩🏻🍳🧑🏻🍳 | Pastelería: 4 Pasos para iniciar tu emprendimiento en este rubro https://ift.tt/WH8KfZA May 07, 2025 at 01:15PM
#emprendimiento#ideas
3 Tipos de ingresos causantes de la riqueza de los millonarios
https://www.emprendiendohistorias.com/tipos-de-ingresos/
Si te gusta y te enseña algo valioso, por favor:
Comparte este canal 🔄
Apoya con reacción 👍🏼
Comenta y crecemos 🗣
La productividad está en tiC 📲📈
#emprendimiento#ideas
Qué es un leasing y beneficiarse de un arrendamiento financiero
https://www.emprendiendohistorias.com/que-es-leasing-financiero/
Si te gusta y te enseña algo valioso, por favor:
Comparte este canal 🔄
Apoya con reacción 👍🏼
Comenta y crecemos 🗣
La productividad está en tiC 📲📈
#emprendimiento#ideas
Gana más de 100 mil USD al mes vendiendo por Etsy (Así lo hizo)
https://www.emprendiendohistorias.com/gana-100-mil-usd-vendiendo-etsy/
Si te gusta y te enseña algo valioso, por favor:
Comparte este canal 🔄
Apoya con reacción 👍🏼
Comenta y crecemos 🗣
La productividad está en tiC 📲📈
#ideas#emprendimiento
Hacer un avión ✈️ de papel a veces resulta difícil.
Sin embargo, con este sistema, el asunto está resuelto porque literal ensambla aeronaves de papel 📄.
Si te gusta comparte este canal.👌🏼
#emprendimiento#ideas
Minar criptomonedas: Qué es, cómo empezar y cuánto se gana
https://www.emprendiendohistorias.com/que-es-minar-criptomonedas/
Si te gusta y te enseña algo valioso, por favor:
Comparte este canal 🔄
Apoya con reacción 👍🏼
Comenta y crecemos 🗣
La productividad está en tiC 📲📈
#emprendimiento#ideas
7 Tipos de criptomonedas para invertir y sus características
https://www.emprendiendohistorias.com/tipos-de-criptomonedas/
Si te gusta y te enseña algo valioso, por favor:
Comparte este canal 🔄
Apoya con reacción 👍🏼
Comenta y crecemos 🗣
La productividad está en tiC 📲📈