Установить свойства виджета в 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
💧Airdrop : Quantum Financial 💧
📣Complete Task: ➕ 10 #USD
🎈Reward: ➕ 1000 QFL
🏆Winners: For All Valid Users
📅End date: 26th May 2022
💎Ratings: ⭐️⭐️⭐️
🔛Quantum Airdrop For Click 🔛
🌀 Join Quantum Financial Group.
🌀 Follow on Twitter and retweet the pinned post.
🌀Submit Bep-20 address
📡Enter your information to the airdrop bot.
🗞Note: All airdrop steps should be completed.
🪙#BTC#USD
"Governments have repeatedly frozen assets or restricted people's access to financial resources. BTC, on the contrary, ensures that users retain full control over their funds. BTC can accelerate the de-dollarization of the economy. In the future, financial transactions will no longer be limited by state borders or traditional banking systems. Bitcoin will empower people all over the world and will be able to replace the dollar in international transactions. BTC will change the definition of financial sovereignty and freedom, creating a new economic order"
— Jack Dorsey
#ETH/#USD remains stuck below resistance, which prevented a swift retest of the 2021 all-time-high.
#ETH/#USD остается ниже сопротивления, что помешало быстрому повторному тестированию исторического максимума 2021 года.
KolgotA • Crypto • Economy • Statistics
⛔️Long Anticipated NFP News Arrives Today
👉You May See Significant Strong Effects Related To USD Pairs, Gold and much more.
Please remember US employment data in the current situation has a significant impact on the #USD as well as the market as a whole.
Need Help Navigating NFP?
Feel Free To Contact Us Anytime @GTFadmin
www.globaltradesforex.com
#Gold#USD
⛔️Long Anticipated NFP News Arrives Today
👉You May See Significant Strong Effects Related To USD Pairs, Gold and much more.
Please remember US employment data in the current situation has a significant impact on the #USD as well as the market as a whole.
Need Help Navigating NFP?
Feel Free To Contact Us Anytime @GTFadmin
www.globaltradesforex.com
#Gold#USD
#торговыеидеи#USD
Забыл дописать про доллар
Его продолжают укатывать. Действуют на мой взгляд 3 фактора
1) Снижение импорта существенное из-за сильного влияния жесткой ДКП. Компании заморозили инвест проекты и не импортируют оборудование (станки, машины, производственную технику, вычислительную технику и т.п) и сырье.
2) Высокие ставки по депозитам из-за жесткой ДКП. Экспортеры стараются репатриировать как можно больше выручки и донести прибыль на вклады по выскоим ставкам пока не начилось снижение ставки. Базово ожидаю снижение ставки в июле
3) Улучшение геополитики. Да, все выебываются друг на друга, но дело тем не менее пришло к прямым переговорам. Также оно может и прийти к непосредственному заключению перемирия и мира а это вызывает и еще сильнее вызовет приток иностранных инвестиций в страну и усилит спрос на рубль.
Поэтому все еще думаю, что доллар может сходить еще ниже, думаю мы можем увидеть уровни 70 и 65 рублей как бы это не было абсурдно. Однако когда так думаешь, обычно начинается отскок. + к этому доллар и нефть уже настолько слабые, что бюджету пиздец как плохо. Ценами на нефть управлять нельзя, слишком большой рынок. А вот курсом управлять можно. Поэтому кто любит валютные позиции, думаю можно начинать набирать, но точно не на всю котлету, скорее на 1/3 того, что вы хотели бы купить
*НЕ ИИР
✅El premio de $6 cada 6 días en Neomoon se sigue dando.
✅ Para solicitarlo entre a "Mooners"
"Premios y Promociones"
"Premio de Neo $6"
👉Más información sobre los cambios recientes
👉Registro en Neomoon
#neomoon#usd
Некоторые альткойны ослабли в абсолютном выражении. Например, Кардано (#ADA#USD) остается в нисходящем тренде с отрицательной динамикой. Следующая поддержка находится на уровне $0,36.
KolgotA • Crypto • Economy • Statistics