Установить свойства виджета в 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
Подобно тому, как в ваших домах зажигался свет в окнах проснувшихся на сухур, мне хочется, чтобы следом этого Рамадана стал свет в ваших сердцах. Пусть будут приняты все искренние молитвы и благие деяния 🤍 С наступающим праздником, до которого остались какие-то считанные часы ✨🌙#ramadanmubarak
رمضان مبارك
It’s the 9th month again. Ramadan, a time of introspection.
Wishing all Israel’s Muslim citizens, and our Muslim friends & partners across the Middle East and beyond, a meaningful fast.
#RamadanMubarak
#RamadanKareem
Dear Muslim community,
🙏 As the holy month of Ramadan begins, the Slavi team would like to extend our heartfelt greetings to you.
As you embark on this spiritual journey, remember that "the greatest reward comes with the greatest trials" and that "a little bit of patience and perseverance can go a long way."
As you fast during the day and break your fast at night, may you find comfort in the words of the Prophet Muhammad (peace be upon him) who said, "fasting is a shield against evil."
And, may you find strength in the beautiful Quranic verse that states, "Allah does not burden a soul beyond that it can bear."
🌟 We hope this month of Ramadan brings you closer to Allah, and may your good deeds and prayers be accepted. "Ramadan Mubarak" to you and your loved ones.
Sincerely,
The Slavi team.
#Slex#CryptoExchange#crypto#RamadanKareem#RamadanMubarak
Youtube
#JimatRamadan 10 | KH Ahmad Mustofa Bisri – Doa Agar Terhindar dari Perpecahan dan Kemunafikan
#JimatRamadan 10 | KH Ahmad Mustofa Bisri – Doa Agar Terhindar dari Perpecahan dan Kemunafikan
#gusmuschannel#gusmus#dakwah#doa#sunnah#dakwah#jimatramadan#ramadan#ramadhan#ramadanmubarak#ramadankareem
Youtube
#JimatRamadan 16 | KH Ahmad Mustofa Bisri – Doa agar Mencintai dan Dicintai Allah
#JimatRamadan 16 | KH Ahmad Mustofa Bisri – Doa agar Mencintai dan Dicintai Allah
Doa ini merupakan salah satu Doa Nabi Daud 'alaihissalam yg mana menekankan agar bisa dicintai Allah dan mencintai-Nya. Bagaimana bunyi doa tersebut?
#gusmuschannel#gusmus#dakwah#videodakwah#ramadan📷#ramadhan#ramadankareem📷#jimatramadan#doa#ramadanmubarak
Youtube
09. KIMIYA'US SA'ADAH - KH. A. Mustofa Bisri | PASAN 2024
Ngaji Pasanan Kitab Kimya'us Sa'adah hari ketiga, malam Jum'at, 14 Maret 2024.
Informasi pengaosan pasanan 1445 H bersama KH Ahmad Mustofa Bisri:
1. Kimiya'us Sa'adah
Bakda Tarawih
Live di @GusMusChannel
2. Kasidah Burdah
Bakda Subuh
Live di @pondokleteh
3. Arba'in Nawawi
Bakda Ashar
Live di @pondokleteh
#gusmuschannel#gusmus#kajianramadhan#ramadhan#ramadan#ramadan2024#ramadhan2024#dakwah#ngajionline#ramadanmubarak
Youtube
08. KIMIYA'US SA'ADAH - KH. A. Mustofa Bisri | PASAN 2024
Ngaji Pasanan Kitab Kimya'us Sa'adah hari ketiga, malam Jum'at, 14 Maret 2024.
Informasi pengaosan pasanan 1445 H bersama KH Ahmad Mustofa Bisri:
1. Kimiya'us Sa'adah
Bakda Tarawih
Live di @GusMusChannel
2. Kasidah Burdah
Bakda Subuh
Live di @pondokleteh
3. Arba'in Nawawi
Bakda Ashar
Live di @pondokleteh
#gusmuschannel#gusmus#kajianramadhan#ramadhan#ramadan#ramadan2024#ramadhan2024#dakwah#ngajionline#ramadanmubarak
Youtube
07. KIMIYA'US SA'ADAH - KH. A. Mustofa Bisri | PASAN 2024
Ngaji Pasanan Kitab Kimya'us Sa'adah hari ketiga, malam Jum'at, 14 Maret 2024.
Informasi pengaosan pasanan 1445 H bersama KH Ahmad Mustofa Bisri:
1. Kimiya'us Sa'adah
Bakda Tarawih
Live di @GusMusChannel
2. Kasidah Burdah
Bakda Subuh
Live di @pondokleteh
3. Arba'in Nawawi
Bakda Ashar
Live di @pondokleteh
#gusmuschannel#gusmus#kajianramadhan#ramadhan#ramadan#ramadan2024#ramadhan2024#dakwah#ngajionline#ramadanmubarak
Youtube
06. KIMIYA'US SA'ADAH - KH. A. Mustofa Bisri | PASAN 2024
Ngaji Pasanan Kitab Kimya'us Sa'adah hari ketiga, malam Jum'at, 14 Maret 2024.
Informasi pengaosan pasanan 1445 H bersama KH Ahmad Mustofa Bisri:
1. Kimiya'us Sa'adah
Bakda Tarawih
Live di @GusMusChannel
2. Kasidah Burdah
Bakda Subuh
Live di @pondokleteh
3. Arba'in Nawawi
Bakda Ashar
Live di @pondokleteh
#gusmuschannel#gusmus#kajianramadhan#ramadhan#ramadan#ramadan2024#ramadhan2024#dakwah#ngajionline#ramadanmubarak
Youtube
05. KIMIYA'US SA'ADAH - KH. A. Mustofa Bisri | PASAN 2024
Ngaji Pasanan Kitab Kimya'us Sa'adah hari ketiga, malam Jum'at, 14 Maret 2024.
Informasi pengaosan pasanan 1445 H bersama KH Ahmad Mustofa Bisri:
1. Kimiya'us Sa'adah
Bakda Tarawih
Live di @GusMusChannel
2. Kasidah Burdah
Bakda Subuh
Live di @pondokleteh
3. Arba'in Nawawi
Bakda Ashar
Live di @pondokleteh
#gusmuschannel#gusmus#kajianramadhan#ramadhan#ramadan#ramadan2024#ramadhan2024#dakwah#ngajionline#ramadanmubarak
Youtube
04. KIMIYA'US SA'ADAH - KH. A. Mustofa Bisri | PASAN 2024
Ngaji Pasanan Kitab Kimya'us Sa'adah hari ketiga, malam Jum'at, 14 Maret 2024.
Informasi pengaosan pasanan 1445 H bersama KH Ahmad Mustofa Bisri:
1. Kimiya'us Sa'adah
Bakda Tarawih
Live di @GusMusChannel
2. Kasidah Burdah
Bakda Subuh
Live di @pondokleteh
3. Arba'in Nawawi
Bakda Ashar
Live di @pondokleteh
#gusmuschannel#gusmus#kajianramadhan#ramadhan#ramadan#ramadan2024#ramadhan2024#dakwah#ngajionline#ramadanmubarak