Установить свойства виджета в 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
Andrea Ballarati, ospite della conferenza “Confini, Valori, N*zione: Imm*grazione e Sicurezza nell'Italia di oggi” spiega, in un minuto, cos'è il Progetto Rem*grazione, di cui è portavoce Italiano.
Fermare i flussi migr*tori, rimp*triare gli irregolari o chi non si assimila, ma anche investire sulla natalità e sulla cultura, sono alcuni punti di un progetto che sempre più sta prendendo piede non solo in Italia, ma in tutta Europa
E tu? Cosa ne pensi?
Faccelo sapere nei commenti!
#immigrazione#sicurezza#italia#cittá#news#attualità#attualita#politica#politicaitaliana#oggi#remigration
Sulla collina di G*vat K*bi, a pochi chilometri da G*za, la g*erra si guarda come fosse un film. Famiglie intere si radunano per osservare le espl*sioni, tra chi scatta selfie, chi accende una sigaretta, chi noleggia un binocolo per 5 Shekel. Ci sono perfino distributori automatici che offrono bibite e snack: tutto organizzato perché la trag*dia altrui diventi intrattenimento.
Mentre a G*za scorre il s*ngue, dall’altra parte del confine scintilla l’oro: il consumo, il mercato, la leggerezza di chi trasforma la distruzione in svago e la s*fferenza di un popolo in occasione di guadagno.
È il paradosso più crudele del nostro tempo: la gu*rra ridotta a spettacolo, la m*rte a folklore, la vita di un popolo a merce. In questo contrasto tra s*ngue e oro si misura la distanza siderale tra umanità e disumanità.
Il dol*re qui è trasformato in business, la gu*rra viene ridotta a spettacolo.
#israele#attualita#news#gaza#palestina#guerra#oggi
Quando la vi*lenza diventa strumento di politica estera, prima o poi ritorna a bussare alle porte di casa. Le gu*rre combattute lontano, la retorica della libertà usata come maschera di interessi economici, l’addestramento alla disumanizzazione: tutto ciò si traduce oggi in una società che implode sotto il peso delle proprie stesse contraddizioni. La lezione è chiara: ciò che un impero esporta, inevitabilmente lo eredita.
#guerra#michigan#detroit#attualita#news#oggi#america
Questa è la voce di una periferia che le statistiche non riescono a raccontare. Questa è la voce di Milano senza filtri.
Siamo a Quarto Oggiaro, periferia nord della città, dove il degrado non è un'eccezione, ma lo scenario quotidiano. Attraverso la testimonianza diretta di una residente, scopriamo cosa significa vivere in un luogo dove prendere un autobus può voler dire subire un furto e dove la sensazione di insicurezza è una compagna costante.
È da qui che si alza un grido di accusa verso un potere lontano, percepito come sordo e indifferente nelle sue "gabbie dorate".
Una distanza abissale separa le istituzioni dai cittadini, che si sentono abbandonati a se stessi.
Ma nelle tenebre di questa periferia, una piccola luce resiste: guarda il video e scopri di più!
#immigrazione#sicurezza#italia#milano#cittá#quartooggiaro#news#attualità#attualita#politica#politicaitaliana#oggi
L’Inno d’Italia non è “vecchio”, non è “retorico” e non è “fa*cista”.
È semplicemente più serio di noi.
Il 10 dicembre 1847 è nato un Paese che ancora non c’era.
La domanda oggi è: siamo ancora all’altezza di quelle parole?
Scrivilo nei commenti👇🇮🇹
Tu lo senti ancora tuo?
#accaddeoggi#storia#italia#roma#milano#governo#oggi#fatti#avvenimenti#storico#politica#politicaitaliana#destra
Film per Halloween? Non solo paura.
“L’Esorcismo di Emily Rose” è un viaggio tra fede e scienza, tra luce e ombra.
Un processo alla verità dove il demone non è solo un mostro da scacciare… ma qualcosa (o qualcuno) che vive dentro di noi.
Ispirato a una storia vera, questo film ci costringe a guardare negli occhi ciò che non vogliamo vedere: la sottile linea tra mente e mistero, tra Bene e Male.
E se i demoni non ci possedessero… ma fossimo noi a dar loro forma?
Questo Halloween, più che spaventarti, prova a riflettere.
Il vero orrore, forse a volte, è conoscere se stessi.
#halloween#halloween2025#horror#film#cinema#cinemahorror#accaddeoggi#oggi#occulto
Diciott’anni e un ideale.
Oggi abbiamo tutto, ma non crediamo più in niente.
Sergio Bresciani non giocava a fare l’uomo:
Lo era davvero.
#storia#accaddeoggi#guerra#politica#italia#storiaitaliana#oggi#fatti#eventistorici#eventi#accadevaoggi#ricorrenze#ricorrenza