Установить свойства виджета в 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
#Italia
Commento del Presidente del Piemonte Alberto #Cirio (#FI|PPE) sulla decisone di Elena Chiorino (#FdI|ECR) di restituire l’incarico di Vicepresidente della Regione Piemonte:
“Apprezzo il gesto di Elena Chiorino, perché di fronte a questi fatti era necessario dare un segnale e il segnale è che le istituzioni vanno sempre tutelate e messe in sicurezza. Come ho già avuto modo di dire sette anni di conoscenza e di lavoro insieme mi hanno dimostrato la sua capacità e la sua correttezza su cui non nutro alcun dubbio. Tuttavia - prosegue il presidente - anche se ha posto rimedio non appena compresa la situazione, la leggerezza che ha compiuto è stata grave, perché fatta da chi ha ruoli istituzionali importanti e necessitava di una reazione da parte della Regione. Reazione che, come è mia consuetudine, è stata ragionata ed equilibrata: la mia è la scelta di un presidente che non si gira dall’altra parte perché ha a cuore il bene delle istituzioni”.
@Osservatorioitaliano
#Italia#Referendum2026
Il Presidente della Regione Piemonte Alberto #Cirio (#FI|PPE) ha votato ieri verso le 13:30 con suo figlio.
@Osservatorioitaliano
#Italia
Nonostante la dimissioni da Vicepresidente della Regione Piemonte, Elena #Chiorino (#FdI|ECR) resta assessora nella giunta di Alberto #Cirio (#FI|EPP), e sono confermate le sue deleghe: Istruzione e Lavoro. Esponente biellese di Fratelli d'Italia, Chiorino è anche lei coinvolta nell'affaire Delmastro, in quanto è stata titolare di quote, poi lasciate, di un ristorante romano di Miriam Caroccia, figlia diciottenne di Mauro Caroccia, condannato in via definitiva dalla Cassazione perché prestanome del clan mafioso dei Senese.
@Osservatorioitaliano
#Italia#Piemonte
Il caso Delmastro scuote la Regione Piemonte: le opposizioni chiedono la revoca delle deleghe o le dimissioni della Vicepresidente della giunta regionale, Elena #Chiorino (#FdI|ECR).
Fedelissima dell’ex sottosegretario alla Giustizia, Chiorino è socia del ristorante appartenente alla famiglia Caroccia, vicina al clan Senese.
Il Presidente Alberto #Cirio (#FI|EPP), oggi assente in Consiglio regionale per impegni a Bruxelles, annuncia che riferirà in Aula insieme alla sua vice la prossima settimana.
@OsservatorioItaliano
#Italia
❗️ Perde forza l'appello dei governatori a Draghi: dopo il no dei 3 governatori di #FdI|ECR, si sfilano anche i forzisti #Cirio, #Bardi, #Toma e #Occhiuto.
@UltimoraPolitics
#Italia#Piemonte
Il Segretario di #Azione|RE Carlo #Calenda sul nuovo vicepresidente del Piemonte Maurizio #Marrone (#FdI|ECR):
"È un filo putiniano. La nomina di un filo putiniano con una pessima storia di viaggi in Donbass e apertura di finti consolati alla vicepresidenza della Regione Piemonte è di una gravità assoluta e vorrei un intervento diretto di Antonio #Tajani e #Cirio."
Nota: Azione, in Piemonte, fa parte della maggioranza del presidente.
@Osservatorioitaliano