Регулярно приходится писать и ревьюить код, где используется 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
#Italia
#Volt|G/EFA annuncia la sua partecipazione alle primarie della coalizione progressista: “Ci saremo per cambiare le regole del gioco. Serve una squadra, non leader soli al comando”.
Volt ha inoltre annunciato l’inizio di un percorso di ascolto sul territorio, per incidere sul programma di coalizione, mettendo al centro la crisi abitativa, la transizione energetica e azioni per ridurre la precarietà.
Tra le proposte anche quella di modificare il sistema di voto delle primarie, introducendo il voto supplementare (dove l’elettore indica una prima e una seconda scelta per garantire una convergenza immediata sul candidato più condiviso) o il sistema del STV.
@OsservatorioItaliano
#Italia
Nota #Volt|G/EFA: "Riteniamo uno squallido teatrino l'intervista di #Lavrov a Zona Bianca, su Rete4. Il fatto che venga permesso al ministro degli esteri russo di divulgare la propaganda russa in prima serata è squalificante per l'intero giornalismo televisivo italiano."
@UltimoraPolitics
#Italia
Gianluca #Guerra (#Volt|G/EFA): "Ius Scholae salta da calendario della Camera per colpa della Lega che ancora una volta si dimostra capace di raggiungere risultati solo quando si devono negare diritti civili e umani. È anche chiaro che questa maggioranza non potrà mai portare progresso sociale."
@UltimoraPolitics
#Italia#UE
Gianluca #Guerra (#Volt|G/EFA): "Con le dimissioni di Fabrice Leggeri, forse finalmente capiremo che c'è qualcosa che non va con Frontex e si inizierà ad agire.
Pushback illegali, mancata trasparenza sugli atti, procedure forzate. Tutto questo giocando con la vita di migliaia di esseri umani."
@UltimoraPolitics
#UE
Francesca Romana #DAntuono, copresidente #Volt|G/EFA: "Vogliamo creare una rivoluzione nel Parlamento Europeo: 25 membri di Volt da almeno 7 paesi invaderanno il Parlamento. Persone di ogni genere, etnia, origine, orientamento sessuale, disabilità o background sociale: insieme aggiusteremo l'UE."
@UltimoraPolitics
#UE
Francesca Romana #DAntuono, copresidente #Volt|G/EFA: "Putin ha invaso l'Ucraina, uccidendo civili innocenti e commettendo indimenticabili crimini contro l'umanità. Non staremo a guardare l'invasione."
@UltimoraPolitics
#UE#Ucraina
🇺🇦 Mykhaylo #Pobigay (#Volt|G/EFA): "L'Unione Europea ha bisogno di più integrazione, di nuovi membri e di un esercito europeo."
@UltimoraPolitics