Установить свойства виджета в 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
¡Atención!
‼️Hijo de José Ramón Fernández se burla de los 'chairos' y aseguró que su padre no es pro #4T
Así lo escribió en sus redes sociales 🙄
🚨Ojo: El comentarista deportivo ofreció una disculpa por afirmar que vivimos en una dictadura y aseguró que la usó de forma incorrecta.
¡No le ayudes, compadre! 🤦♀️
#edu_города В каком районе Вены поселиться?
Районы австрийской столицы пронумерованы и располагаются вокруг первого — словно спирали ракушки расходятся от ее центральной части. Команда viennawurstelstand.com подготовила карту, на которой вкратце описывает каждый из районов, а мы цитируем сопроводительный текст в переводе, чтобы помочь вам выбрать место, в котором будет по-настоящему комфортно.
Что-то на богатом
📍Районы #6 (Mariahilf, 1060), #7 (Neubau, 1070), #8 (Josefstadt, 1080)
Живите здесь, если... хотите жить на мощеной улице, возвращаться домой пешком после вечерней прогулки, предпочитаете широкий выбор вариантов воскресного бранча, планируете тратить большую часть дохода на обеды вне дома и платить за стрижку больше, чем большинство людей тратит за год.
💶 Ценовой диапазон аренды жилья: от среднего до высокого
Спокойные районы с душой
📍#3 (Landstraße, 1030), #4t (Wieden, 1040)
Живите здесь, если... хотите познакомиться с соседями и чтобы вас тепло встречали, когда заходите за кофе или завтраком в местную пекарню или кафе; живите рядом с самой большой зеленой зоной города и отличными беговыми дорожками (1030), в менее раскрученном и модном районе, где живут молодые художники (1040), и где можно найти уютное пространство для молодой семьи (1030) и хорошее настроение.
💶 Диапазон цен на аренду: оба района все еще относительно недорогие, но становятся все более популярными, а значит, и цены на аренду растут.
📍Недооцененные районы с характером
#20 (Brigittenau, 1200), #15 (Fünfhaus, 1150), #16 (Ottakring, 1160), #5 (Margareten, 1050), #10 (Favoriten, 1100)
Живите здесь, если... хотите наименее низкую стоимость аренды жилья, мультикультурный, менее ухоженный и более обжитый район, делать недорогие покупки и регулярно уходить в зеленые зоны; если вы студент с ограниченным бюджетом, не против поселиться рядом с городским каналом (1200).
💶 Ценовой диапазон аренды: низкий
Читайте продолжение в следующей публикации👇
¡Tengan para que aprendan! ☝🏻
🔴#Sheinbaum recordó que gracias a la #4T ahora es inconstitucional la condonación a grandes contribuyentes 🚫💰
@ManuelGaleazz1R para #SinLínea🎤
¡Así se las gastan! 🙄
🔴#Alatorre presentó un "reportaje" para golpear a la #4T mediante las Tiendas SuperISSSTE, pero les dieron su periodicazo 🗞️👀
https://sinlineamx.com/exhiben-mentiras-alatorre-tv-azteca-tiendas-superissste/
Tómala 🥊
🔴#JoséRamónLópez señaló que los logros de la #4T incomodan a una "minoría rapaz" que ya desde hace rato perdió el poder político ‼️👊🏻💥
https://sinlineamx.com/hijo-de-amlo-defiende-4t-tras-polemica-ruben-rocha/
Hay división 😱
🔴 Los diputados de la #4T acusaron que cualquier práctica del #fracking no garantizaría la autosuficiencia energética ⛽‼️👇🏻
https://sinlineamx.com/diputados-de-la-4t-van-vs-propuesta-fracking-sheinbaum/
¡Hechos, no palabras! ☝🏻
🔴 En solo 7 años, la #4T ya se superó la inversión educativa de los sexenios de Fox, Calderón y Peña 🎒💰 | #Shenbaum romperá el récord en su mandato 👩🏻👏🏻
https://sinlineamx.com/sheinbaum-invertira-350-mil-mdp-educacion-sexenio/
Ojo ahí 👀
🔴#Noroña (@fernandeznorona) descartó que exista divorcio entre los partidos aliados de la #4T tras la votación del #PlanB‼️🗳️👇🏻
https://sinlineamx.com/norona-pide-no-sataniza
La medicina del #PRIAN👀
🔴#ManuelHuerta aseguró que la oposición le teme a los cambios de la #4T que responden a la decisión del pueblo 🔥‼️
https://sinlineamx.com/senador-se-burla-oposicion-con-postal-sheinbaum-y-amlo/
¡La justicia se democratiza! 🗳️⚖️
El Plan B de la Presidenta #Sheinbaum no es un ajuste más, es la garantía de que en México manda el pueblo.
🇲🇽 Menos privilegios, más transparencia y una transformación que no se detiene.
¿Tú ya conoces los beneficios? Te lo cuento en este video. 👇
#Sheinbaum#PlanB#México#Noticias#4T#SinLínea