Регулярно приходится писать и ревьюить код, где используется PySide2-6.
Заметил, что в подавляющем большинстве случаев настройка создаваемых базовых виджетов происходит через методы. Думаю, всем знаком такой способ.
Простой пример с кнопкой:
button = QPushButton("Click Me")
button.setMinimumWidth(300)
button.setFlat(True)
button.setStyleSheet("font-size: 20pt")
button.setToolTip("Super Button")
button.clicked.connect(lambda: print("Button clicked"))
Но есть и альтернативный способ - настройка через свойства. Это просто ключевые аргументы конструктора класса. Хоть они и не указаны в документации как аргументы, но они есть)
Этот код делает тоже самое но с помощью Property
button = QPushButton(
"Click Me",
minimumWidth=300,
flat=True,
styleSheet="font-size: 20pt",
toolTip="Super Button",
clicked=lambda: print("Button clicked"),
)
Где это может быть полезно
▫️ Это выглядит более аккуратно и коротко, уже повод использовать
▫️ Может использоваться в заполнении лейаута, когда нам не нужно никакое другое взаимодействие с виджетом и поэтому сохранять его в переменную не требуется. Например, лейбл или кнопка.
widget = QWidget(minimumWidth=400)
layout = QHBoxLayout(widget)
layout.addWidget(QLabel("Button >", alignment=Qt.AlignRight))
layout.addWidget(QPushButton("Click Me", clicked=lambda: print("Button clicked")))
widget.show()
Либо так
widget = QWidget(minimumWidth=400)
layout = QHBoxLayout(widget)
for wd in (
QLabel("Button >", alignment=Qt.AlignRight),
QPushButton("Click Me", clicked=lambda: ...)
):
layout.addWidget(wd)
widget.show()
▫️ Можно хранить настройки в каком-то конфиге или генерировать на лету, после чего передавать как kwargs.
kwargs = {"text": "Hello " * 30, "wordWrap": True}
my_label = QLabel(**kwargs)
Как получить полный список доступных свойств?
Эта функция распечатает в терминал все свойства виджета и их текущие значения
def print_widget_properties(widget):
meta_object = widget.metaObject()
for i in range(meta_object.propertyCount()):
property_ = meta_object.property(i)
property_name = property_.name()
property_value = property_.read(widget)
print(f"{property_name}: {property_value}")
#tricks#qt
Papa #LeoneXIV riceverà in udienza, giovedì 9 aprile, alle ore 11.30, nella Sala Clementina del Palazzo Apostolico, in Vaticano, alcuni sportivi italiani, rappresentanti di tutti coloro che hanno partecipato alle #Olimpiadi e alle #Paralimpiadi invernali di #MilanoCortina, per mettere in risalto i successi degli atleti, la cui passione e le cui capacità hanno arricchito così tanto le nostre vite.
Proprio nel giorno di apertura dei Giochi, il 6 febbraio scorso, il Santo Padre ha firmato la Lettera “La vita in abbondanza” sul valore dello sport. A coordinare l’iniziativa dell’Udienza è il Dicastero per la Cultura e l’Educazione, con il coinvolgimento di Athletica Vaticana, in collaborazione con il Comitato Nazionale Olimpico Italiano (Coni) e il Comitato Italiano Paralimpico (Cip) Significativamente, durante l’Udienza sarà presente in sala la “Croce degli Sportivi” che, per tutta la durata dei Giochi, è stata collocata nella basilica di San Babila a Milano.
Alcuni atleti si recheranno poi al Dispensario Pediatrico “Santa Marta”, sempre in Vaticano, per incontrare alcune famiglie in situazioni di povertà e fragilità.
Nel giorno in cui #Milano accoglie la Croce Olimpica degli Sportivi in vista dei Giochi di #MilanoCortina, Papa #LeoneXIV auspica che "queste giornate di sana competizione contribuiscano a costruire ponti tra culture e popoli, promuovendo l’accoglienza, la solidarietà e la pace”.
Le parole del Pontefice arrivano nel capoluogo lombardo tramite un telegramma, a firma del Cardinale Segretario di Stato, Pietro Parolin, inviato a mons. Mario Delpini, Arcivescovo di Milano, che questa sera presiede Messa a San Babila, chiesa dove sarà custodita la Croce Olimpica per tutta la durata dei Giochi Olimpici e Paralimpici.
Il Santo Padre, salutando "quanti prendono parte alla celebrazione” “auspica" altresì che le #Olimpiadi suscitino "sentimenti di amicizia e di fraternità, rinsaldando la consapevolezza del valore dello sport al servizio dello sviluppo integrale della persona umana”.
“Siano giorni di festa! Sia festa per l’incontro di pace tra i popoli, sia festa per la bellezza delle gare e dei risultati, sia festa perché le Olimpiadi e le #Paralimpiadi non escludono nessuno”, le parole di mons. Delpini durante l'omelia.
“Siano giorni di profezia - prosegue l'Arcivescovo -, profezia della vocazione alla fraternità universale, profezia per la testimonianza di onestà in ogni cosa, profezia perché le Olimpiadi e le Paralimpiadi piantano nella vicenda umana eccellenza, amicizia, rispetto”.
Il presule chiede inoltre che siano “giorni di condivisione, perché la festa non dimentica le tragedie, perché le risorse non siano per i ricchi, ma per tutti, perché le Olimpiadi e le Paralimpiadi alimentano la cultura della pace”.
Dall'Arcivescovo anche il richiamo all'ascolto del corpo: "Il tuo corpo parla a chi ti incontra. Non ridurre il corpo a una macchina da sfruttare, non ridurre il corpo a un meccanismo complicato che ogni tanto deve essere aggiustato, non ridurre il corpo tuo e altrui a un oggetto da desiderare, non ridurre il corpo a una prigione di cui liberarsi, a un’apparenza di cui vergognarsi”.
“In queste settimane i Giochi saranno una specie di festival del corpo”, prosegue il presule, sottolineando che gli atleti “potranno istruire la città e tutti coloro che sanno ascoltare”. Lo #sport, per mons. Delpini, è “una scuola di ascesi, di morale, di umanità, di vita, di audacia e di fantasia”. Riferendosi alla croce degli sportivi, l’arcivescovo spiega: “Il corpo di Cristo, crocifisso per amore, è l’apertura per andare oltre e accogliere il mistero. Se volete sapere che cos’è l’amore, guardate a Gesù, adorate il corpo crocifisso e risorto”.
📸 Arcidiocesi di Milano