TGTGInsighttelegram intelligenceLIVE / telegram public index
← Python Заметки

TGINSIGHT SIMILAR POSTS

Најди сличен содржај

Изворен канал @pythonotes · Post #381 · 23 окт.

Установить свойства виджета в 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

Hashtags

Резултати

Пронајдени 2 слични објави

Пребарај: #tradingsquadgames

当前筛选 #tradingsquadgames清除筛选

🤝Electra TRADING SQUAD GAMES – STARTS TODAY! ⛳️ The time has come! The $50,000 tournament starts today at 14:00 (UTC), and our squad 🔔TON Events is ready to fight for top awards! Join the tournament using 🤑 $TON, 🤑 $BNB or 🤑 $ETH wallet. 💵Prizes for squads: 🥇1st place: $20,000 USDT 🥈2nd place: $15,000 USDT 🥉3rd place: $10,000 USDT *Prizes are distributed among the top 10 traders of each winning squad proportionally to their own trading volume. The full prize pool will be awarded once the total trading volume reaches $62.5 million. 💵Individual awards: $5,000 USDT + additional $250 USDT for every $10 million in trading volume. *prizes are distributed among the top 20 traders proportionally to their highest PnL (in $USDT) at the end of the tournament. 💵Daily bonuses: ✅ $50 for the best PnL of the day ✅ $50 for worst PnL of the day ✅ $50 for the highest tradingvolume of the day *prizes are distributed among the top 3 traders at the end of each day and paid out the next day. 🤑All trading activity counts towards farming points for the future $ELT! That is, by participating in the tournament, you not only fight for cash prizes, but also earn points for the future airdrop. 🔥OUR SQUAD IS READY! We're on the path to victory — join our squad now, boost the volume, maximize PnL, and win together! 🎰🎰 #Electra#TradingTournament#TradingSquadGames#DEX#DeFi

🤝Last chance to get bonuses before the tournament! Participants of Electra TRADING SQUAD GAMES – Season 1, great news! Now on Electra Terminal there is a special offer – deposit bonuses for all traders. 🤔How does this work? ✔️Top up your balance and receive a bonus. ✔️The larger the deposit amount, the higher the bonus. ✔️Additional rewards for participating in special challenges. ⚠️Important: The bonus program will not be available during the tournament (starting from March 3) . We recommend that you top up your balance in advance to get maximum privileges and ensure a comfortable start in the competition. 🤔Why is this beneficial? ✔️All trades in the tournament count towards $ELT farming, so you're not only competing for the prize pool, but also earning points for a future airdrop. ✔️Additional opportunities to increase profits - more deposit, more opportunities for trading and PnL growth. 🚀Join our squad, top up your balance and take part in the tournament – ​​maximize your chances of winning! #Electra#TradingTournament#TradingSquadGames#DEX#DeFi