Установить свойства виджета в 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...
Be ready for our weekly report coming soon 👌
FxSignals_Gold analyst brutally butchered the market this week with unbeatable killing result and performance 😱 Our daily and consistent performance speaks for itself... We take maximum pride in what we do💃🕺
#PropFirmChallenge&Verification✅
#AccountManagement👨🏻💻
Stay tuned for the update 👊
#TheGoldMaster🦾
Dear Traders,
Welcome each and everyone to a new trading week, we commence this week in the name of God 🙇♂️ a fruitful, buoyant and pips_gain week to everyone.
Huge pips ahead this coming week. Lots of scanned trade setups. FxSignals_Gold analyst would be crushing the market.
Lots of accounts would be doubled stay tuned mates, let's help you grow.
Let’s make this the best week of your trading career so far... Let's catch you some serious 💵💴
For Question, Information,Feedback ...
Kindly Contact
☎️T.me/FrxMaster_Gold
#PropFirmChallenge&Verification✅
#AccountManagement👨🏻💻
Good Morning Traders...
Be ready for our weekly report coming soon 👌
FxSignals_Gold analyst brutally butchered the market this week with unbeatable killing result and performance 😱 Our daily and consistent performance speaks for itself... We take maximum pride in what we do💃🕺
#PropFirmChallenge&Verification✅
#AccountManagement👨🏻💻
Stay tuned for the update 👊
#TheGoldMaster🦾
Dear Traders,
Welcome each and everyone to a new trading week, we commence this week in the name of God 🙇♂️ a fruitful, buoyant and pips_gain week to everyone.
Huge pips ahead this coming week. Lots of scanned trade setups. FxSignals_Gold analyst would be crushing the market.
Lots of accounts would be doubled stay tuned mates, let's help you grow.
Let’s make this the best week of your trading career so far... Let's catch you some serious 💵💴
For Question, Information,Feedback ...
Kindly Contact
☎️T.me/FrxMaster_Gold
#PropFirmChallenge&Verification✅
#AccountManagement👨🏻💻
Happy Tuesday My Champions! 😎
Success in trading starts with the right mindset and honing our skills. Let's focus on improving our knowledge and decision-making abilities. Embrace the hustle and pray for wisdom.
Thank you, God and the Universe, for guiding us. Here's to a profitable and wise trading day ahead! 🙏
☎️Forex Master
#AccountManagement
#PropFirmChallenge&Verification✅
Good Morning Traders...
Be ready for our weekly report coming soon 👌
FxSignals_Gold analyst brutally butchered the market this week with unbeatable killing result and performance 😱 Our daily and consistent performance speaks for itself... We take maximum pride in what we do💃🕺
#PropFirmChallenge&Verification✅
#AccountManagement👨🏻💻
Stay tuned for the update 👊
#TheGoldMaster🦾
Happy Friday My Champions! 😎
Every great dream begins with a dreamer ✨
Always remember, you have within you the strength, patience, and the passion to reach for the stars to change the world! 👌
Believe in yourself & have faith in your abilities. Don't let nobody steal your dream! 🔥
Wish it, plan it, do it!
#PropFirmChallenge&Verification✅
#AccountManagement👨🏻💻
Stay tuned for the update 👊
#TheGoldMaster🦾
FxSignals_Gold Weekly Report - ( From 28/10/24 To 01/11/24)
90% Success rate, +916Pips delivered this week🔥🔥
Quick Pips Summary⤵️
⚡️Net Profit: +916Pips
🔎Total Signals: 16
⏳Running Signals: 1
⚠️Losing Pips: -100 Pips
🎯Winning Pips: +1,016Pips
🏆Total Net Profit Gained: +916Pips
We build loyalty, Real loyalty. We extract every pip we can from the markets, precision!
For Question, Information,Feedback ...
Kindly Contact
☎️T.me/FrxMaster_Gold
#PropFirmChallenge&Verification✅
#AccountManagement👨🏻💻
Dear Traders,
Welcome each and everyone to a new trading week, we commence this week in the name of God 🙇♂️ a fruitful, buoyant and pips_gain week to everyone.
Huge pips ahead this coming week. Lots of scanned trade setups. FxSignals_Gold analyst would be crushing the market.
Lots of accounts would be doubled stay tuned mates, let's help you grow.
Let’s make this the best week of your trading career so far... Let's catch you some serious 💵💴
For Question, Information,Feedback ...
Kindly Contact
☎️T.me/FxGoldHubClientSupport
#PropFirmChallenge&Verification✅
#AccountManagement👨🏻💻
FxSignals_Gold Weekly Report - ( From 21/10/24 To 25/10/24)
80% Success rate, +603Pips delivered this week🔥🔥
Quick Pips Summary⤵️
⚡️Net Profit: +603Pips
🔎Total Signals: 13
⏳Running Signals: 0
⚠️Losing Pips: -150 Pips
🎯Winning Pips: +753Pips
🏆Total Net Profit Gained: +603Pips
We build loyalty, Real loyalty. We extract every pip we can from the markets, precision!
#PropFirmChallenge&Verification✅
#AccountManagement👨🏻💻
Good Morning Traders...
Be ready for our weekly report coming soon 👌
FxSignals_Gold analyst brutally butchered the market this week with unbeatable killing result and performance 😱 Our daily and consistent performance speaks for itself... We take maximum pride in what we do💃🕺
#PropFirmChallenge&Verification✅
#AccountManagement👨🏻💻
Stay tuned for the update 👊
#TheGoldMaster🦾
FxSignals_Gold Premium VIP Daily Performance 🔔
Wednesday - 05/02/2025
Swing Trade » 🟠Buy GBPAUD (-50Pips)
Swing Trade » 🟠Sell XAUUSD (+37Pips)
Scalp Trade » 🟠Sell XAUUSD (+30Pips)
Swing Trade » 🟠Buy GBPJPY (+32Pips)
Scalp Trade » 🟠Sell XAUUSD (+86Pips)
Scalp Trade » 🟠Sell XAUUSD (+39Pips)
Swing Trade » 🟠Buy XAUUSD (-50Pips)
Scalp Trade » 🟠Sell XAUUSD (+80Pips)
⚡️Net Profit: +208Pips
🔎Total Signals: 8
⏳Running Signals: 1
⚠️Losing Pips: 100 Pips
🎯Winning Pips: +308Pips
🏆Total Net Profit Gained: +208Pips
Always remember, never lose sight of your goals. Start Investing in your dreams. No matter how hard it gets, not matter what challenges you face, look forward and never ever give up!
Join the list of others who have found their success in forex with FxSignals_Gold VIP with very low and affordable subscription fee.
Starting from $49 per Month
For Question, Information,Feedback ...
Kindly Contact
☎️T.me/FrxMaster_Gold
#PropFirmChallenge&Verification✅
#FUNDEDAccountManagement👨🏻💻