Установить свойства виджета в 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
Arthur Hayes (@CryptoHayes) just unstaked and deposited 7.9M $ENA ($6.44M) to #Binance and #Bybit as the price dropped 9% in the past 24 hours.
He previously accumulated 16.79M $ENA at ~$0.666 ($11.19M) in late Nov 2024 and staked them for rewards.
To date, he has deposited 16.9M $ENA back to CEXs at ~$1.01 ($17M), likely earning $5.52M (+48%).
Follow @spotonchain and check out the #ArthurHayes entity via https://platform.spotonchain.ai/en/platform/entity/1552
🚨 Arthur Hayes just dumped nearly $5M in crypto!
Sold ETH, ENA, LDO, AAVE, UNI, and ETHFI in 24 hours. Looks like he's cashing out! 💸
#ArthurHayes#CryptoNews
🚀 Arthur Hayes: AI to Enhance Institutional Trading Dominance Over Retail Investors
Arthur Hayes has expressed that artificial intelligence will enable institutional trading systems to surpass retail traders in direct market competition. According to NS3.AI, Hayes advised retail investors to steer clear of short-term speculation and instead focus on holding cryptocurrencies for the long term.
#ArthurHayes#AI#InstitutionalTrading#RetailInvestors#Cryptocurrency#LongTermInvesting#NS3AI#MarketCompetition
🚀 Arthur Hayes Increases HYPE Holdings After Three-Month Hiatus
Arthur Hayes has made a significant move in the cryptocurrency market by purchasing 26,022 HYPE tokens, valued at approximately $1.1 million, after a nearly three-month break. According to BlockBeats, this acquisition brings his total holdings to 247,334 HYPE tokens, worth around $10.44 million, with an unrealized profit exceeding $2.5 million.
#ArthurHayes#HYPEHoldings#Cryptocurrency#CryptoMarket#BlockBeats#CryptoInvestment#HYPETokens#UnrealizedProfit
🚀 Arthur Hayes Skeptical of Iran's Alleged Bitcoin Toll Collection
Arthur Hayes expressed skepticism about Iran's purported acceptance of Bitcoin for toll payments on April 9. According to BlockBeats, Hayes stated that he would only believe Iran is collecting tolls in Bitcoin if he sees actual transactions on the Bitcoin blockchain. Otherwise, he considers it a tactic by the Islamic Revolutionary Guard Corps to mock the Western fiat currency financial system.
#ArthurHayes#Iran#Bitcoin#TollPayments#Blockchain#Cryptocurrency#IslamicRevolutionaryGuardCorps#FiatCurrency#FinancialSystem#BTC
Ethereum Rollback Proposed After Bybit Hack
Arthur Hayes proposes rolling back Ethereum to a block prior to the $1.5B Bybit hack, arguing it would benefit both the platform and holders. He asserts that Ethereum’s immutability can be revisited, citing prior instances. Support for the rollback comes from Bitcoin maximalist Samson Mow, suggesting it could limit funding for North Korea’s nuclear program. The plan involves pausing all ETH trading and renaming the hacked chain to ETHNK. Bybit CEO assures that company assets exceed the lost amount, with significant reserves remaining secure. For details, read more here.
#Ethereum#Bybit#Crypto#Blockchain#Security#Hack#SamsonMow#ArthurHayes#ETH#VC#LazarusGroup#NorthKorea#Defi#Investing#Market#Trading#USDT#WhaleAlert
🚀 Arthur Hayes Warns of Potential Federal Reserve Intervention in Private Credit Market
Arthur Hayes has highlighted concerns regarding the approximately $1.8 trillion private credit market, suggesting that stress within this sector could necessitate a liquidity intervention by the Federal Reserve. According to NS3.AI, Hayes noted that regulators are currently scrutinizing the exposure of banks and insurance companies as the sector faces rising redemptions and an increase in non-performing loans.
#ArthurHayes#FederalReserve#PrivateCredit#LiquidityCrisis#Banking#Finance#NonPerformingLoans#CreditMarket#Regulation
BTC & ETH ETFs See Massive Inflows
🎄Christmas Update on Crypto ETFs! BTC ETFs had an inflow of $978.6 million, while ETH ETFs attracted $128.7 million. Ex-BitMEX head Arthur Hayes predicts the bullish phase may peak by mid-March, suggesting to increase risk but take profits before April due to upcoming tax and liquidity tightening cycles. Positive dollar momentum is expected to boost liquidity by $612 billion. Key drivers include a decrease in RRP funds and TGA usage by the U.S. Treasury. 🚀
For more details, visit: Wu Blockchain News
#Crypto#BTC#ETH#ETF#ArthurHayes#MarketTrends#Liquidity#RRP#TGA#QuantitativeTightening#Finance#Investing#BullMarket#CryptoNews#MarketPredictions#Inflows#Christmas2025#LiquidityDrivers
Ethereum ETF Sees Major Inflows
The Ethereum spot ETF recorded a net inflow of $139M last week, with Blackrock's Ethereum ETF, ETHA, gaining $135M. However, on January 27, the crypto market saw declines across sectors, with DeFAI down 28.73%. Other sectors like AI Agents saw a 16.91% drop. U.S. crypto czar David Sacks noted ongoing evaluations regarding Bitcoin and digital assets. Meanwhile, Rosseti, Russia's state power company, plans to introduce Bitcoin mining to leverage idle power resources. Runetoshi's new memecoin, Runes, faced volatility, dropping from $28M to $500k in market value. Arthur Hayes predicts Bitcoin could dip to $70,000 before a future rise to $250,000 this year. More on ETF inflows | Market drop details | David Sacks comments | Rosseti's Bitcoin mining | Runes token collapse | Hayes Bitcoin predictions
#Ethereum#ETF#Crypto#Bitcoin#Russia#Mining#Securities#Stablecoins#PricePrediction#DigitalAssets#Memecoin#MarketDrop#Runetoshi#DeFi#AI#QuantitativeEasing#USDC#WhaleAlert#MarketVolatility#FinancialCrisis#ArthurHayes