Регулярно приходится писать и ревьюить код, где используется 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
La question énergétique prend de l'ampleur en #Europe
Depuis que l'Ukraine a interrompu le transit du gaz russe, la question énergétique devient de plus en plus alarmante pour les Européens. Les détails avec notre reporter Antoine Cléraux.
RT en français • Osez questionner !
🇪🇺#EuropeВ 3х странах Европы за сутки выявили более 100 000 новых случаев коронавируса (в каждой из стран) ⚠️☝️
💬 Как только стали объявлять о завершении пандемии, за последние сутки в Италии выявили 132 000 новых случаев ковида.
💬 Аналогичная ситуация в Германии: инфекцию обнаружили у 130 000 человек,
💬 Во Франции – 119 000 граждан заболело ковидом.
⏺Qu’en est-il réellement des « drones russes » qui effraient tant l'#Europe ?
La « menace russe » semble être devenue l'explication par défaut de tous les phénomènes en Europe. Les autorités européennes accusent la #Russie bien avant d'avoir obtenu le moindre détail, et ces accusations s'avèrent souvent – comme on pouvait s'y attendre – infondées. Les précisions de notre reporter Antoine Cléraux.
RT en français • Osez questionner !
🗣L’#Europe discute du transfert de composants d’armes nucléaires à l’#Ukraine
Selon la diplomatie russe, l’Europe a discuté du transfert de composants d’armes nucléaires à l’Ukraine. La menace nucléaire est-elle une réalité ? Les précisions avec notre reporter, Daria Vaganova.
RT en français • Osez questionner !
#Europe#UE
La Commissione Europea valuta la possibilità di creare un secondo recovery fund per l'energia. In questo ore giro di consultazioni tra stati membri per sondare la fattibilità della proposta.
@UltimoraPolitics
🇺🇸États-Unis : stocks sous pression
Selon The New York Times, la guerre contre l’#Iran a entraîné une consommation massive de munitions américaines, notamment plus de 1 100 missiles JASSM-ER, ainsi qu’un volume élevé de Tomahawk, Patriot et ATACMS.
Face à cette intensité, le Pentagone a dû redéployer des équipements depuis l’#Europe et l’Asie vers le Moyen-Orient, réduisant sa marge de manœuvre sur d’autres théâtres. Le coût du conflit est estimé entre 28 et 35 milliards de dollars, dont 5,6 milliards dès les premiers jours.
La reconstitution des stocks s’annonce lente et complexe, posant la question de la capacité des États-Unis à soutenir durablement plusieurs conflits à haute intensité.
RT en français • Osez questionner !
The name Italy comes from the Oscan(an extinct southern Italy language) word víteliú, meaning “calf land,” perhaps because the bull was a symbol of the Southern Italian tribes.
@googlefactss#nowyouknow#europe
🇨🇭🇷🇺🇺🇸🇪🇺 Une image de Vladimir Poutine et Donald Trump, entourés de dirigeants européens de taille réduite, a été publiée par le journal suisse NZZ.
L'article qui suit est intitulé "Trump, Poutine et beaucoup de nains: pourquoi l'Europe ne grandit pas". Selon le journal, l'Europe n'est pas un partenaire qui traite d'égal à égal avec les États-Unis et "ne le sera jamais".
#russie#europe#étatsunis
❗️L’#Ukraine demande de nouveau que l’#Europe la finance
À Kiev, le budget national a été calculé en prévision de la poursuite du conflit militaire en 2026. Mais il y a un bémol... Zelensky demande à ses alliés occidentaux une somme deux fois supérieure à celle prévue dans le projet de budget national. Les détails avec notre reporter, Igor Kourachenko.
RT en français • Osez questionner !