Регулярно приходится писать и ревьюить код, где используется 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
🌍 The desert climate zone covers about one-fifth of Earth's land, yet some deserts get colder than snowy regions—Antarctica is classified as the world's largest desert by climate. ✨
#climatezones⚡#deserts⚡#earth⚡#geography⚡#nature
👉subscribe Amazing Geography
👉more Channels
🌍 The boundary between different climate zones doesn't always follow straight lines—on mountain slopes, tropical and temperate climates can exist just a few kilometers apart, packed side by side. ✨
#climatezones⚡#biomes⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
🌍 The humid subtropical climate zone stretches across southeastern continents but also appears in parts of East Asia and South America, helping create lush forests and long growing seasons for crops. ✨
#climatezones⚡#vegetation⚡#agriculture⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
🌍 The Mediterranean climate zone, found in only a few parts of the world, has mild, rainy winters and hot, dry summers—a combination perfect for growing olives, grapes, and citrus. ✨
#climatezones⚡#Mediterranean⚡#agriculture⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
🌍 Antarctica’s interior is the only place on Earth with a true polar climate—temperatures rarely rise above freezing, and less precipitation falls each year than in most deserts. ✨
#climatezones⚡#antarctica⚡#extremes⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
🌍 In the world’s subtropical climate zones, some deserts like the Sahara and Arabian receive less than 2 centimeters of rain a year—making them among the driest places on Earth. ✨
#climatezones⚡#deserts⚡#rainfall⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography🌍
🌍 The humid subtropical climate zone—found in places like southeastern China and the southeastern US—brings hot summers, mild winters, and is prone to sudden, powerful thunderstorms. ✨
#climatezones⚡#weather⚡#regions⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
🌍 The world’s largest continental climate zone covers central Eurasia, where summers can reach above 40°C and winters drop below –40°C—a giant temperature swing found nowhere else on Earth. ✨
#climatezones⚡#temperature⚡#Eurasia⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
🌍 Earth’s Mediterranean climate zones, found in places like California and parts of Australia, support massive wildflower blooms after winter rains despite having hot, dry summers. ✨
#climatezones⚡#biomes⚡#vegetation⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
🌍 The subarctic climate zone stretches across vast parts of Canada and Russia, where winters are so cold that forests are called “taiga”—the world’s largest continuous woodland region. ✨
#climatezones⚡#taiga⚡#forests⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
🌍 Some climate zones, like the monsoon zone, see one season bringing almost all their annual rain in just a few weeks. This sudden wet season shapes ecosystems and water supplies for millions. ✨
#climatezones⚡#monsoon⚡#rainfall⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels