Регулярно приходится писать и ревьюить код, где используется 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
⚡️Toncoin: TON Nominated for Best Developer Ecosystem
#TON#developers
Toncoin has announced that TON has been nominated for the Best Ecosystem Program for Developers at the BeInCrypto 100 Awards 2025. Enthusiasts and supporters can participate in public voting to support this achievement.
Source: link
@tonlines
EVAA Celebrates TON Mainnet Anniversary
#TON#developers
EVAA marks the anniversary of The Open Network Mainnet, launched on May 26, 2021. Over four years, the TON ecosystem has flourished with the contributions of active developers and TON Core.
Source: link
@tonlines
Tonnel Network: Telegram’s Financial Growth through Strategic Partnerships
#Telegram#developers
Tonnel Network highlights how Telegram’s financial stability has been strengthened through strategic partnerships with developers. These partnerships involve app and bot development, in-app purchases, and its advertising initiatives.
Source: link
@tonlines
We're a proud sponsor of the first Flow Hackathon – a global competition from 2/21–2/26 to push the limits of #web3#onFlow.
Beyond excited to be involved in the expansion of the #ecosystem and to provide an opportunity for developers to shine! 💡✨
This is what's up:
💰 $500K in prizes
🌐 Virtual & IRL events
📚 Education phase to learn more about building #onFlow
✨ Amazing speakers and judges
👨💻 Empowering #developers to do great things
Are you ready to build awesome innovations and earn prizes for your work?
Register today! 👇
https://hackathon.flow.com