Установить свойства виджета в 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
По #BTC жду что то типа такого сценария.
Уже почти все распродал, набранное 11-12-го мая. На отскоке вверх своё забрал и буду ждать дальнейшего снижения.
Пока использую для хранения стейбл #DAI, думаю он выстоит в кровавой битве.
💲 USDC has overtaken XRP in terms of market capitalization!
The total supply of #USDT, #USDC and #DAI has increased to $141.42 billion - the highest since May 2022.
Earlier: Whales are hoarding stablecoins
Beyond Crypto
Ethereum Foundation Start 2025 with ETH Sale
The Ethereum Foundation kicks off 2025 by selling 100 ETH for 329,463 DAI. In total, 4.466 ETH was sold in 2024 for $12.61 million at an average price of $2,823 per token. The foundation often initiates sales before significant price drops.
For more details, visit: Spot On Chain
#Ethereum#Crypto#ETH#DAI#Market#Investing
🔄Миграция DAI в USDS.
Крупные биржи уже сегодня начнут автоматическую конвертацию #DAI в #USDS в соотношении 1:1.
Это финальный этап биржевой части ребрендинга MakerDAO в Sky Protocol. 9 апреля команда Sky обещает опубликовать подтверждение апгрейда DAI → USDS.
Ранее: MakerDAO больше нет
Crypto Headlines
🚀 Ethereum Foundation Completes Sale of 5,000 ETH
The Ethereum Foundation has successfully sold 5,000 ETH, according to Foresight News. The sale resulted in 11.1 million DAI, with an average selling price of $2,221 per ETH.
#EthereumFoundation#ETH#sale#DAI#cryptocurrency#ForesightNews
📝Epstein koalicia vs Irán 📝
hlavné udalosti ku koncu 24. apríla
Najhlasnejšou udalosťou dňa bolo predĺženie prímeria v Libanone o tri týždne, o čom s hrdosťou vyhlásil Trump, s prisľúbením zorganizovať medzi Libanoncami a Izraelčanmi stretnutie na vyššej úrovni. Ale ktokoľvek sa zúčastní dialógu, v praxi toto „prímerie“ pravdepodobne stále znamená odklad útokov na Bejrút.
➡️Keďže vnútené podmienky pre Libanon stále zahŕňajú likvidáciu „Hezbollahu“, OSI neprestáva s operáciami na juhu Libanonu, kde zostáva prítomná táto skupina, zároveň ničiac už obsadené obce. Preto predstavitelia spojené s hnutím okamžite zdôraznili zmysluplnosť ukončenia paľby a bojovníci skupiny pokračovali v odvetných ostreľovaniach izraelských pozícií.
➡️Okolo „zamrznutého“ konfliktu s Iránom je tiež málo pohybu, ak nerátame iluzórnu šancu na obnovenie rokovaní: médiá očakávajú, že odcestovalý do IslamabaduAbbas Arakči aspoň zanechá odkaz pre Američanov, alebo dokonca uskutoční priame stretnutie s delegátmi USA, ktorých zajtra sľubujú poslať do Pákistanu.
Rýchlosť, akou vo Washingtone oznámili pripravenosť na stretnutie, vytvára dojem, že tím Trumpa horúčkovito hľadá východisko z krízy, ktorú sám vytvoril. Ale príčina môže byť aj prozaickejšia: takéto pozitívne správy znižujú ceny ropy, čo sa stalo aj tentokrát.
➡️Cena „čierneho zlata“ nie je jediným problémom, ktorému čelia úrady USA. Médiá už naplno počítajú, akú škodu rozpočet a bojová schopnosť krajiny utrpia kvôli nadmernému spotrebovaniu munície v Iráne. A to ešte podceňujú — v skutočnosti je situácia ešte komplikovanejšia.
➡️Navyše, novinári vinia vojenské vedenie aj z podceňovania strát počas konfliktu. Na pozadí týchto vyšetrovaní vyhlásenia úradov USA o bezkrvnom víťazstve nad Iránom postupne strácajú váhu v očiach bežných občanov.
➡️Klenotom na torte boli vyjadrenia ultrapravicových síl v Izraeli, že Trump, ktorý predtým vystupoval proti anexii Západného brehu, dovolil rozšírenie osád. Keďže čoraz menej Američanov vyjadruje podporu Izraelčanom, takéto správy (aj keď sú falošné) ešte viac zasiahnu reputáciu súčasnej vlády USA.
📎Karty vo vysokom rozlíšení:
🔸Ohniská nestability (ru; en)
🔸Súčasná situácia v Libanone(ru; en)
#daĭdzhest #Izrael#Irán#Libanon#USA
🌐Zdroj:@rybar
🔗Link:https://t.me/rybar/79753
#Rybar
https://t.me/casusbellilive
Truth over narrative 24/7
WEB | CONTACT | SHOP
📅Vytvorené: 2026-04-24 22:50:31