Установить свойства виджета в PySide можно не только через соответствующие методы и конструктор класса. Можно их изменять с помощью метода setProperty по имени.
btn = QPushButton("Click Me")
btn.setProperty("flat", True)
Это аналогично вызову
btn.setFlat(True)
Если указать несуществующее свойство, то оно просто создается
btn.setProperty("btnType", "super")
Получить его значение можно методом .property(name)
btn_type = btn.property("btnType")
Когда это может быть полезно?
▫️Можно просто хранить какие то данные в виджете и потом их доставать обратно
widget = QWidget()
widget.setProperty('my_data', 123)
print(widget.property('my_data'))
▫️ Назначая эти свойства разным виджетам можно потом отличить виджеты во время итераци по ним. Например, найти все кнопки со свойством my_data="superbtn".
Но ведь вместо кастомного свойства можно использовать objectName, будет тот же результат.
Да, но y ObjectName есть ограничение - только строки.
▫️ Если нам потребуется не просто поиск а, например, сортировка по числу, то свойства позволяют нам это сделать. Поддерживается любой тип данных
widget.setProperty('my_data', {'Key': 'value'})
widget.setProperty('order', 1)
all_widgets.sort(key=w: w.property('order'))
Но ведь Python позволяет всё вышеперечисленное сделать простым созданием атрибута у объекта
widget.order = 1
widget.my_data = 123
Да, но я думаю что не надо объяснять почему не стоит так делать. К тому же, если у виджета нет свойства то метод .property(name) вернет None, а отсутствующий атрибут выбросит исключение.
▫️ Действительно полезное применение кастомным свойствам - контроль стилей. Здесь атрибутами не обойтись, нужны именно свойства.
Дело в том, что в селекторах стилей можно указывать конкретные свойства виджетов на которые следует назначать стиль.
Просто запустите этот код
from PySide2.QtWidgets import *
if __name__ == "__main__":
app = QApplication([])
widget = QWidget(minimumWidth=300)
layout = QVBoxLayout(widget)
btn1 = QPushButton("Action 1")
btn2 = QPushButton("Action 2")
btn3 = QPushButton("Action 3", flat=True)
layout.addWidget(btn1)
layout.addWidget(btn2)
layout.addWidget(btn3)
# добавим кастомное свойство одной кнопке
btn1.setProperty("btnType", "super")
# добавляем стили
widget.setStyleSheet(
"""
QPushButton[btnType="super"] {
background-color: yellow;
color: red;
}
QPushButton[flat="true"] {
color: yellow;
}
"""
)
widget.show()
app.exec_()
С помощью селектора мы избирательно назначили стили на конкретные кнопки.
Как получить список всех кастомный свойств?
Функция получения списка кастомных свойств отличается от получения дефолтных.
def print_widget_dyn_properties(widget):
for prop_name in widget.dynamicPropertyNames():
property_name = prop_name.data().decode()
property_value = widget.property(property_name)
print(f"{property_name}: {property_value}")
#tricks#qt
☀️Good Morning, Traders!☕
Every sunrise brings a new chart, a new candle, and a new opportunity. 📊
Today is not just another day — it’s another chance to grow your account, your mindset, and your confidence. 💪
🎯Remember:
Trading is not just about profits — it’s about discipline, patience, and consistency.
Don’t chase the market… understand it.
Don’t fear losses… learn from them.
💼Pocket Option gives you the platform.
Your mindset gives you the power.
Now go make today count. 🚀
#BinaryOptions#PocketOption
New week = New opportunities 🚀
Every Monday is a reminder that:
“If yesterday was tough, today is a fresh start.”
In trading, your greatest skills are patience and consistency.
Don’t just trade — plan, learn, and grow.
📈 Stay focused.
💡 Stay disciplined.
🔥 Stay motivated.
Let’s make this week profitable!
💲
#MondayMotivation#BinaryOptions#TradingMindset
☀️Good Morning Traders!
📈
A new day brings new opportunities — the market never sleeps, and neither do the smart traders. 🔥
Focus on discipline, patience, and perfect entries today. Remember — profits come to those who wait for the right moment, not every moment! 💰
💰 Stay focused
📊 Trust your strategy
🚀 Let’s make today a winning day!
#BinaryOptions#TradingMindset#MorningVibes
Halloween Weekend Grind Never Dies! 💀📈
Even when the market’s sleeping, real traders stay awake — dreaming big, planning moves, and leveling up. ⚡
Tonight’s vibe:
No fear, no FOMO — just fun, freedom & future goals. 🍾🔥
When Monday hits, we rise again — sharper, smarter & ready to haunt those charts! 👻
📈
#TraderMindset#BinaryOptions#realbinaryoptionss
🌈 | New Week, New Profits
💵
Good morning traders! ☕️
A brand new week means fresh opportunities to make smart moves and grow your account. 🚀
✅ Stay focused
✅ Follow the signals
✅ Manage your risk
✅ Trust the process
Let’s start this Monday strong and make it a week full of green trades! 📈🔥
#BinaryOptions#TradingSignals#MondayMotivation#RealBinaryOptions
🚀WEEKEND MODE: PREPARE TO DOMINATE!🔥🚀
Champions don’t rest… they prepare. 💪📈
While others relax, real traders level up.
📊 Study the charts
🧠 Improve your strategy
🔍 Analyze your mistakes
🎯 Plan for next week
Remember —
Next week’s profits are built on this weekend’s preparation 💸
Discipline + Patience = Big Wins 🏆
If you’re serious about success, weekends are your secret weapon.
Drop in the comments 👇
“READY TO WIN 💥”
We don’t depend on luck.
We trade with skill. 🔥
#WeekendVibes#TraderMindset#BinaryOptions#StayFocused
⚡️PRO THUNDER V12: THE ELITE TRADING STANDARD⚡️
Stop settling for repainting tools and local scripts. Pro Thunder V12 is the culmination of 5 years of development by SS7Trader Ltd.
Why the pros choose V12:
🚫100% Non-Repaint: Signals are fixed. What you see is what you get.
🧠Neural Network AI: Powered by advanced AI to filter market noise.
✅Registered Authority: Built by a verified company, not an anonymous team.
⏳5-Year Legacy: Continuous evolution and optimization since 2021.
🎯 Pure Simplicity: Clear Buy/Sell signals with a fixed 5-minute expiry.
🌍 Universal: Works on any broker, any chart, and any timeframe.
━━━━━━━━━━━━━━━━
🚀 JOIN THE ELITE. STOP GUESSING.
🔗https://ss7trader.com/product/pro-thunder-v12/
✈️ Contact: https://t.me/SSsevenTrader
#SS7Trader#ProThunderV12#TradingAI#NonRepaint#BinaryOptions
⚡️PRO THUNDER V12: THE ELITE TRADING STANDARD⚡️
Stop settling for repainting tools and local scripts. Pro Thunder V12 is the culmination of 5 years of development by SS7Trader Ltd.
Why the pros choose V12:
🚫100% Non-Repaint: Signals are fixed. What you see is what you get.
🧠Neural Network AI: Powered by advanced AI to filter market noise.
✅Registered Authority: Built by a verified company, not an anonymous team.
⏳5-Year Legacy: Continuous evolution and optimization since 2021.
🎯 Pure Simplicity: Clear Buy/Sell signals with a fixed 5-minute expiry.
🌍 Universal: Works on any broker, any chart, and any timeframe.
━━━━━━━━━━━━━━━━
🚀 JOIN THE ELITE. STOP GUESSING.
🔗https://ss7trader.com/product/pro-thunder-v12/
✈️ Contact: https://t.me/SSsevenTrader
#SS7Trader#ProThunderV12#TradingAI#NonRepaint#BinaryOptions
⚡️PRO THUNDER V12: THE ELITE TRADING STANDARD⚡️
Stop settling for repainting tools and local scripts. Pro Thunder V12 is the culmination of 5 years of development by SS7Trader Ltd.
Why the pros choose V12:
🚫100% Non-Repaint: Signals are fixed. What you see is what you get.
🧠Neural Network AI: Powered by advanced AI to filter market noise.
✅Registered Authority: Built by a verified company, not an anonymous team.
⏳5-Year Legacy: Continuous evolution and optimization since 2021.
🎯 Pure Simplicity: Clear Buy/Sell signals with a fixed 5-minute expiry.
🌍 Universal: Works on any broker, any chart, and any timeframe.
━━━━━━━━━━━━━━━━
🚀 JOIN THE ELITE. STOP GUESSING.
🔗https://ss7trader.com/product/pro-thunder-v12/
✈️ Contact: https://t.me/SSsevenTrader
#SS7Trader#ProThunderV12#TradingAI#NonRepaint#BinaryOptions
⚡️PRO THUNDER V12: THE ELITE TRADING STANDARD⚡️
Stop settling for repainting tools and local scripts. Pro Thunder V12 is the culmination of 5 years of development by SS7Trader Ltd.
Why the pros choose V12:
🚫100% Non-Repaint: Signals are fixed. What you see is what you get.
🧠Neural Network AI: Powered by advanced AI to filter market noise.
✅Registered Authority: Built by a verified company, not an anonymous team.
⏳5-Year Legacy: Continuous evolution and optimization since 2021.
🎯 Pure Simplicity: Clear Buy/Sell signals with a fixed 5-minute expiry.
🌍 Universal: Works on any broker, any chart, and any timeframe.
━━━━━━━━━━━━━━━━
🚀 JOIN THE ELITE. STOP GUESSING.
🔗https://ss7trader.com/product/pro-thunder-v12/
✈️ Contact: https://t.me/SSsevenTrader
#SS7Trader#ProThunderV12#TradingAI#NonRepaint#BinaryOptions
⭐️See What Our Clients Are Saying About SS7 Trader!
⭐️
Our traders' success and satisfaction are the foundation of our brand. Discover why the community trusts 'The Binary Experts' to navigate the markets! 📈
👇 Click the link below to read real success stories and testimonials from our amazing community:
🔗https://ss7trader.com/reviews-2/
#SS7Trader#BinaryOptions#TradingReviews#ForexSuccess#TheBinaryExperts
⭐️See What Our Clients Are Saying About SS7 Trader!
⭐️
Our traders' success and satisfaction are the foundation of our brand. Discover why the community trusts 'The Binary Experts' to navigate the markets! 📈
👇 Click the link below to read real success stories and testimonials from our amazing community:
🔗https://ss7trader.com/reviews-2/
#SS7Trader#BinaryOptions#TradingReviews#ForexSuccess#TheBinaryExperts