Регулярно приходится писать и ревьюить код, где используется 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
#Resistenza oggi è opporsi a tutto questo, rendersene #liberi.
È questo il vero #fascismo: imporre il degrado agli occhi dei nostri figli e raccontarlo come emancipazione.
Questa è la vera #dittatura: offuscare le rivendicazioni sociali, nascoste da una bandiera cucita con anomia e squallore.
Questa è la vera #violenza: depravazione sponsorizzata dalle multinazionali.
Meglio qualsiasi altra cosa.
https://x.com/SavinoBalzano/status/1890336882346664431?t=76VvEwI_ntFip5o3QAUrzQ&s=19
#Scalfarotto riesce a paragonare il dialogo tra #Trump e #Putin al patto Ribbentrop-Molotov. Si tratta di quello siglato nel '39 tra Hitler e Stalin che, impegnandosi reciprocamente alla non aggressione (e a qualcosa di più, che ancora oggi imbarazza certi sinistri), si spartirono la #Polonia.
Per carità, ai paralleli strampalati siamo stati abituati in questi anni di #guerra: ci hanno ripropinato ossessivamente la Conferenza di Monaco del '38, l'#appeasement di Neville #Chamberlain, le citazioni di Winston #Churchill che stanno sempre bene.
Tutte puttanate, ma quella di #IvanScalfarotto forse davvero merita il primo premio: #DonaldTrump e #VladimirPutin dialogano per porre fine a una guerra alimentata da progressisti e liberali occidentali e lui li paragona ai due dittatori che diedero il via alla Seconda Guerra Mondiale. Hai vinto Ivan: come possiamo intitolarlo il suo premio? qualche idea?
Quelli che hanno soffiato sul fuoco per due anni, parlo in generale, rischiando davvero la deflagrazione di un conflitto totale e nucleare, hanno ancora il coraggio di parlare e di dare sciocche lezioni di storia. Una storia che, se va bene, hanno studiato su La Repubblica.
Ciò che abbiamo oggi sotto gli occhi è il risultato della totale assenza di visione degli ultimi anni: dell'ideologia degli scemi che parlavano della guerra di civiltà, dello scontro tra #democrazia e #dittatura, di quello tra #libertà e barbarie. Le ragioni del conflitto sono sempre state altre, decisamente più prosaiche, e oggi lo vediamo nitidamente: dopo aver causato un milione di morti, dopo aver avvelenato un paese (anche con le armi occidentali) che tale resterà per decenni, probabilmente anche di più.
È pazzesca la totale assenza di dignità in certi soggetti: l'#UE ancora farnetica di un suo coinvolgimento. Non ci sarà: non conteremo nulla.
Ogni volta che qualcuno ha provato a dialogare con Putin è stato coperto di insulti, persino sanzionato. Ha totalmente ragione #Orban: la partecipazione alle trattative devi meritartela e non non ce la meritiamo. Non dopo aver leccato per anni le suole di #Biden.
Abbiamo lasciato che fanatiche invasate come #VonDerLeyen e #Kallas guidassero la nostra agenda, a proposito di patriarcato. Hanno farneticato per anni di sconfitta della Russia, di lotta fino alla vittoria finale.
Oggi #USA, #Russia e #Cina dialogano senza di noi, anche senza la #NATO (guidata da un altro ciarlatano che immaginava di poter dire la sua dinanzi alla volontà statunitense): arrivano persino a immaginare lo stanziamento delle loro truppe sul territorio ucraino. E ne parlano senza l'#Ucraina!
#Zelensky dichiara il suo dispiacere per il mancato coinvolgimento: pare un ragazzino escluso da una festa di compleanno. Una roba deprimente, soprattutto se rimandiamo la memoria alla narrazione della nostra stampa e della nostra televisione che per anni lo ha paragonato a un eroe di guerra. Uno spettacolo oltre il pietoso.
Chi vanegga di un coinvolgimento europeo o di #Kiev alla trattativa non si rende conto che quest'ultima è già cominciata, anzi, probabilmente è già finita.
Nessuna paura, ce ne accorgeremo presto, noi siamo gli idioti a cui il cameriere consegna il conto alla fine del pasto: prego, si accomodi, la cassa è da quella parte.