Установить свойства виджета в 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
In merito al primo suicidio medicalmente assistito avvenuto in #Piemonte di cui il 14 febbraio ha dato notizia la Asl TO4 precisando che si tratta di un 40enne della cintura torinese, affetto da una grave patologia degenerativa irreversibile, in possesso dei requisiti indicati dalla Corte costituzionale nella sentenza n. 242/2019, don Massimo Angelelli, Direttore dell'Ufficio Nazionale della #CEI per la Pastorale della Salute, interpellato dal Sir, afferma: “La scelta di porre fine alla propria vita è dolorosa e va accolta con silenzio, compassione, preghiera e profondo dolore”.
“Sulla scorta della mia esperienza di cappellano ospedaliero - prosegue Angelelli - sono convinto che ogni vita, indipendentemente dalla condizione, abbia valore e meriti di essere vissuta. Tuttavia, solo la persona sofferente può comprendere appieno la propria situazione. Detto questo, di fronte a chi opera una scelta così drammatica, la reazione appropriata è solo silenzio, compassione, preghiera e profondo dolore. Non si può giudicare la decisione di chi sceglie di morire a causa di sofferenze considerate insopportabili al punto da ritenere la morte l’unica scelta possibile, ma bisogna assicurarsi che la persona abbia una percezione chiara e serena del valore della propria vita”.
Per quanto riguarda il ddl sul fine vita il cui approdo in Senato, calendarizzato per domani, è slittato ad aprile, il sacerdote afferma: “Una legge sul fine vita è complessa e rischiosa. Redigere un testo legislativo è estremamente difficile a causa della delicatezza della materia. Se da un lato si vuole andare incontro alle esigenze dei sofferenti, dall’altro si rischia di aprire ‘falle nel sistema’. Queste potrebbero portare ad abusi, come l’accesso al suicidio assistito per persone con disabilità, con patologie psichiatriche o depresse, come già accaduto in alcuni paesi del Nord Europa”.
Per Angelelli, una volta approvata una legge, “sarebbe molto difficile mantenere gli argini”. “Non so esprimermi sull’opportunità o meno di una legge – conclude -: dipende da ‘quale legge’ si intenda approvare, procedendo nel rispetto sia della Costituzione, sia del diritto alla vita”.
#Italia#Piemonte
❗️ BREAKING: Elena #Chiorino (#FdI|ECR) si dimette da assessora all’Istruzione e al Lavoro della Regione Piemonte. Nei giorni scorsi si era dimessa da Vicepresidente della giunta.
@OsservatorioItaliano
#Italia#Piemonte
❗️L’assessore ai lavori pubblici di #Biella Cristiano Franceschini (#FdI|ECR) ha annunciato le sue dimissioni: era uno dei soci della bisteccheria dei Caroccia
@OsservatorioItaliano
I Vescovi della Conferenza Episcopale di #Piemonte e #ValledAosta riuniti a Susa in sessione ordinaria, hanno proceduto ieri alle votazioni per il rinnovo della Presidenza. Ne dà notizia la Segreteria della CEP informando che sono risultati eletti per il prossimo quinquennio il cardinale Roberto Repole, Arcivescovo di #Torino e Vescovo di Susa, come pPresidente, e mons. Franco Lovignana, Vescovo di Aosta e presidente uscente, come Vicepresidente, mentre mons. Egidio Miragoli, Vescovo di Mondovì, è stato confermato segretario.
Un breve riassunto delle misure su energia, maltempo al sud e autonomia a valle del Consiglio dei ministri di oggi:
- Approvazione del decreto legge energia con misure per tagliare le bollette, in particolare a carico delle imprese e delle famiglie fragili. #Meloni stima €5 miliardi di benefici.
- Annunciato rafforzamento del bonus sociale elettrico per circa 2,7 milioni di famiglie vulnerabili, con sconto complessivo annuo in bolletta pari a 315 euro.
- Via libera al dl per l’emergenza maltempo in Calabria, Sardegna e Sicilia e per la gestione degli interventi legati alla frana di Niscemi.
- Approvazione in Cdm degli schemi di intesa preliminare sull’autonomia differenziata con #Liguria, #Lombardia, #Piemonte e #Veneto.
@UltimoraPolitics
#Italia#Piemonte
Il corso a #Biella i festeggiamenti in piazza per le dimissioni di Andrea #Delmastro. Circa 200 persone, che si erano riuniti per chiedere il passo indietro del sottosegretario, avrebbero iniziato a festeggiare dopo la notizia.
@OsservatorioItaliano
#Italia#Piemonte
L’assessore alle politiche sociali e della casa, Maurizio #Marrone (#FdI|ECR) è il nuovo Vicepresidente della Regione Piemonte. Prende il posto della collega di partito, Elena #Chiorino.
@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