Регулярно приходится писать и ревьюить код, где используется 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
🤩1,000,000 Users in Gamety's Telegram App! 👍
Celebration prize: 250$
Show your love in comments on the Tweet, tag 2 friends and post your BNB wallet. 🔥
This massive milestone is just the beginning, so join the excitement and earn your share of 17.5 Million $GTY 💎 tokens with our gamified Airdrop campaign!
➡️ Go to @GametyApp_Bot now!
Next Step…bring our user #onchain👍
Stay tuned for more big news!
Tweet 🔗:
https://x.com/gametyio/status/1795435819529802165
📎Important Links:
Website | X | Chat | Discord | Announcement | Youtube
⚖️Unlock the advantages of advanced onchain analytics with 10 Bonus Free Days exclusively for Multichain Score holders!
Partnering up with ArbitrageScanner, an ecosystem of #onchain analysis and #cryptocurrency arbitrage products, to deliver more meaningful degen experience for the folks with solid onchain reputation 💪
P.s. ArbitrageScanner is already powering the Nomis Leaderboard—check it out to see how it works!
👇Click the button below to check the offer details and claim your Free Days on available subscriptions!
💠Nomis tApp | X | Discord | YouTube | Check Scores⚖️
🚨MVB 8 Celebration Campaign IS NOW LIVE!
For sure, the smartest move to leverage your brand-new BNB Rep Score which has just launched on BNB Chain by #Binance⚡️
Proud to become a part of BNB Chain ecosystem and share this milestone with YOU in our new campaign linked to our participation in the Accelerator!
🗓1-WEEK duration:
💵Unlimited reward pool starting at $5K
🌱10+ BNB Chain Eco projects w/ perks
❗️ The Score determines your profit! Explore partner planets, complete tasks, and claim your well-deserved rewards — it's that simple!
Your #BNB Score is a power — cause its all about your #onchain reputation on BNB Chain 🌐
Get it, Leverage it, Be Rewarded for holding it 💜
And Stay Tuned for Next Thrilling News 🫵 (We're preparing another cash giveaway 🤑)
🎉 Hello, 2025, from SpotOnChain!
Thank you for an incredible 2024. Big things are coming this year, including the launch of our AI-powered trading agent and the highly anticipated $SOCAI token. 🚀
Here’s to redefining your crypto journey together in 2025! 🥂
#OnChain#SpotOnChain#SOCAI
$ONSING ~ the protective big brother of $PUNCH 🛡️🔥
Solid structure.
Higher highs.
Clean continuation.
Early participants secured partials and continue to ride the trend.
This token builds sustainably, not just pumps.
3AZAjwZZCe8Jf4yccheZ5Z1c2SPEPyoYJHFT3Le2pump
Big brother energy.
#Memecoins#Solana#Crypto#OnChain#Teslacalls🚀
Create/Import your #BASE wallet on #TokenPocketExtension! BuildOnBase
✅In-extension #Base Tokens Cross-chain Swap.
✅Connect with third-party websites in a snap.
✅Smoothly operation and New Interface experience.
👇Add #TokenPocketExtension to your Chrome
https://chrome.google.com/webstore/detail/tokenpocket/mfgccjchihfkkindfppnaooecgfneiii?hl=en
#onchainsummer#OnChain#BASE
【Details】https://twitter.com/TokenPocket_TP/status/1691758198003532191
【Powered By】Crypto Box
🎉 Milestone Alert! 🎉
SingSing has officially surpassed 1.2 MILLION on-chain transactions! 🚀
Thank you to our incredible community for making this possible. Here’s to many more milestones ahead! 💪✨
Read more and open treasure at: X Post
#SingSing#Blockchain#Milestone#OnChain#CryptoCommunity