Установить свойства виджета в 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
🚀🚀#WCT/USDT delivered quick profits for our premium members — proof of why we're among the best in the game!
👁🗨 Want to trade smarter and faster? Contact @cripexperts to join our premium group and trade with top-tier experts.
“블록체인 지갑 주소가 여권을 대체하는 시대 온다”– 월렛커넥트(WCT)가 표준화·개방을 추구하는 이유
#WalletConnect#WCT#월렛커넥트
https://www.blockmedia.co.kr/archives/892193?utm_source=telegram&utm_medium=social
#активности#PENGU#ALIGNED#ZORA#XION#VANA#ORA#SUPRA#WCT
Получаем дропы:
1. Pudgy Penguins
Токен оказался мемом без ютилити. Покопался на сайте, не нашёл ни вайтпепера, ни другой инфы про ютилити токена. Избавлюсь от всего что заклеймил. Если не клеймили, не надо.
2. Aligned
Проект собирается раздать дроп тем, кто держал на кошельке следующие монеты на сумму более 50$:
STRK / MINA / ZK / POL / SCR / TAIKO / EIGEN
Если держали, проверяйте по ссылке.
ДД - 23 декабря 2024.
3. Vana
Если вы успели подключить свой кошелёк в тапалке Vana Data Hub, то вероятно получаете дроп токенов VANA. Я совсем забыл про эту и остальные тапалки и нигде не видел постов про подключение там кошелька, поэтому пропустил... В ближайшее время пройдусь по всем тапалкам и подключу кошельки, где нужно.
Проверять дроп не нужно, вам его отправили на EVM - кошелёк. Чтобы увидеть, добавьте сеть VANA Mainnet. https://chainlist.org/?search=vana
4. OP от Zora
Optimism выделил пул наград в 300000($700к) OP для сообщества Zora(как его суперчейна). Команда Zora забрала всё себе раздала единицам дроп за минты нфт, создание нфт и подписчиков.
Мало вероятно, что вы прошли, но проверить стоит всегда - нажми.
5. Ora protocol раздал копейки. Проверить можно по ссылке .
6. XIONничего не стал менять обновил чекер. Можете проверить ещё раз, если до этого были не элигибл. Нажми.
7. Можете забрать дроп от Supra, если фармили их поинты с нами. Для этого проходите по ссылке, подключайте правильный кошелёк с которого фармили поинты, смотрите несколько видео, нажимайте "далее" и забирайте часть от своего дропа.
8. Проверяем дроп от WalletConnect. Нажми
В целом, как можете видеть, гораздо чаще в крипте прилетают нормальные дропы от сторонних проектов, в которых вы ничего не делали. Достаточно просто быть активным пользователям крипты.