Установить свойства виджета в 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
Reached 9th TP in the VIP PRO channel!
Every day we're on fire! 🔥🔥🔥ACCESS TO MANUAL TRADING for 70usdt/month
👉 Not sure? Considering? Contemplating? Come have a look at our performance reports, spend about5 minutes and see for yourself that everything is 100% legit! @propheta_reports
Register and get bonuses up to $6,000
Binance | OKX | ByBit👈🏻click!
#CryptoSignal#tradingview#cryptobot
Reached 9th TP in just 4 hours in the VIP HTL channel!
$204 in profits with a 5% entry and a $1000 deposit!
ACCESS TO MANUAL TRADING for 70usdt/month
👉 Did you know that many traders use our performance reports to build their own trading strategy? That's how useful they are! Check them out: @propheta_reports
Register and get bonuses up to $6,000
Binance | OKX | ByBit👈🏻click!
#CryptoSignal#btc#cryptonews
Now that's trading 👆🔥🔥🔥
Reached 9th TP in the VIP HTL channel!
Using a 5% entry you could've earned $205 with a $1000 deposit
🤑 All this profit could have been yours! 🔥ACCESS TO MANUAL TRADING for 70usdt/month
👉 Looking at those reports and can't believe what you're seing?
Go to our reports channel and audit us! @propheta_reports
Register and get bonuses up to $6,000
Binance | OKX | ByBit👈🏻click!
#CryptoSignal#AItrade#tradingviewindicator
Now that's trading 👆🔥🔥🔥
Reached 9th TP in the VIP PRO channel!
Easy $100 with a 5% entry and a $1000 deposit!
VIPs getting filthy rich by the day ☺️🤑🤑ACCESS TO MANUAL TRADING for 70usdt/month
👉 Looking at those reports and can't believe what you're seing?
Go to our reports channel and audit us! @propheta_reports
Register and get bonuses up to $6,000
Binance | OKX | ByBit👈🏻click!
#AItrader#passiveincome#CryptoSignal
👍 This is why we're here!
Reached 9th TP in the VIP HTL channel!
With a 5% entry and a $1000 deposit, you could've earned $308!
Feels good to be a Propheta VIP, man... 🏖ACCESS TO MANUAL TRADING for 70usdt/month
👉 How to earn every month with zero risk?
Become Propheta partner with zero investment required!
Click the link, then START >>> Referral Program
Register and get bonuses up to $6,000
Binance | OKX | ByBit👈🏻click!
#CryptoSignal#cryptotrading#tradingview
👆 OMG! Would you look at that 👀
Reached 9th TP in just 9 hours in the VIP PRO channel!
Using a 5% entry you could've earned $401 with a $1000 deposit
Feels good to be a Propheta VIP, man... 🏖ACCESS TO MANUAL TRADING for 70usdt/month
👉 Join us and earn big!
Start here: t.me/ProphetaAdmin_bot
Register and get bonuses up to $6,000
Binance | OKX | ByBit👈🏻click!
#AItrading#CryptoSignal#tradingbot
Reached 9th TP in just 1 day in the VIP PRO channel!
Using a 5% entry you could've earned $458 with a $1000 deposit
ACCESS TO MANUAL TRADING for 70usdt/month
👉 Did you know that many traders use our performance reports to build their own trading strategy? That's how useful they are! Check them out: @propheta_reports
Register and get bonuses up to $6,000
Binance | OKX | ByBit👈🏻click!
#bitcoinnews#CryptoSignal#bitcoin
👆 Propheta living up to its name yet again 🔮
Reached 9th TP in just 20 hours in the VIP PRO channel!
Every day we're on fire! 🔥🔥🔥ACCESS TO MANUAL TRADING for 70usdt/month
👉 Join us and earn big!
Start here: t.me/ProphetaAdmin_bot
Register and get bonuses up to $6,000
Binance | OKX | ByBit👈🏻click!
#CryptoSignal#signalchannel#signals
It might look a little confusing at first, but pay attention.
On this chart we have DXY, GOLD and BTC.
DXY, which is a representative chart of the USD, has an inverse relationship with GOLD and BTC.
This is because when the dollar is strong, big money moves into high interest bonds that are safe.
When the dollar weakens, big money moves into safe havens and riskier assets.
What we can firstly see on the chart is that every time DXY drops, GOLD almost instantly moves higher.
Secondly, we can see that BTC also moves higher, but it lags behind GOLD.
But that’s not the most interesting thing…
The most interesting thing here is that every single time DXY has entered a down trend, BTC has began its move between 133 days and 140 days later.
This time, that gives us an end of May date as to when BTC will begin its next true move higher.
It’s just facts, right there for you to see.
#CryptoSignal#Binance#PumpAlert#FuturesTrade
👆 Propheta living up to its name yet again 🔮
Reached 9th TP in just 20 hours in the VIP PRO channel!
You could've earned $402 with a 5% entry and a $1000 deposit!
🤑 All this profit could have been yours! 🔥ACCESS TO MANUAL TRADING for 70usdt/month
🏆Flex your skills with Propheta AI Analyzer: smart AI analysis flips the market upside down, fast tweaks fit any style, and it’s your wingman for snagging top-tier trades! GET THE ACCESS
Register and get bonuses up to $6,000
Binance | OKX | ByBit👈🏻click!
#CryptoSignal#bitcoinnews#cryptoexchange
Channel: Crypto Signals & Automated Trading Bot
Members: ~4K
💢 Username: @cryptosignalalert
Description:
Founded in 2017 - We provide high quality ALT COIN, Spot & Margin Signals, BTC Signals No of Trial/Free Signals Sent - 290 Success Ratio Of Trial/Free Signals - 100% We do provide Crypto Bot for Automated Trades Contact - @cripexperts for Premium Group
🏷 Tags: #crypto_fx_trading
#cryptosignal#automatedtrading#cryptobot#bitcoinbot
https://telegramchannels.me/channels/cryptosignalalert
Oops, we did it again 🤣
Reached 9th TP in 1 day on our #ENAUSDT trade! 🔥🔥🔥
Using a 5% entry you could've earned $462 with a $1000 deposit
ACCESS TO MANUAL TRADING for 70usdt/month
👉 It's time to get a moneyprinter of your own!
Get access: t.me/ProphetaAdmin_bot
Register and get bonuses up to $6,000
Binance | OKX | ByBit👈🏻click!
#cryptochannel#btc#CryptoSignal