Установить свойства виджета в 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
👷♂️Birovning shifti biron joyga qulab tushdi degan voqeani eshitib asabiylashasizmi? Tinch uxlash uchun qanday qurilish materiallaridan foydalanishni bilasizmi?
😊Agar bilsangiz – barakalla. Bilmasangiz, biz sizga yordam beramiz.
☝️KNAUF- PROFIL SHIFT 60x27 osma shiftlarning sinchlarini shakllantirish uchun hamda KNAUF yuzali qoplamalari uchun qo‘llaniladi. Bizning maxsulotlarimiz ana shunday unifikasiyalashgan 👌
Po‘lat qalinligi 0,6 mm bo‘lib, u konstruksiyani mustahkam qiladi hamda burama mixlarning profilda ushlanib qolishini ta'minlaydi.
❓“0,4 mmli profilga nima qilibdi, u arzonroqku, ko‘rinishi ham odatdagiday?” – deb so‘rashingiz mumkin.
““Yupqa” profildan yig’ilgan, mahkamlagichlari qimirlab yotgan sinch, hayotingiz uchun haqiqiy xafv tug‘diradi” – deb javob beramiz.
👉KNAUF-PROFILLAR Texnik Shartlar talablariga muvofiq bo’lib, rux bilan qoplangani tufayli zangdan himoyalangan va aniq geometrik shaklga ega.
Uni ishlatsangiz, kuchshiz sinch haqida va KNAUF-qoplamalarining ulanish joylaridagi yoriqlar haqida unutasiz.
Sifatli maxsulotalarni ishlating.
KNAUF maxsulotalarini ishlating.
❗️Narxi:
KNAUF-Profil shift 3000x60x27x06mm – 8 717 so‘m/p.m.
Brutto-narxi QQS bilan ko‘rsatilgan.
2020 yil 31 dekabrgacha amal qiladi.
- - - - -
👷♂️А Вы начинаете нервничать, услышав очередную историю о том, что у кого-то где-то обрушился потолок? Вы знаете, какой материал использовать, чтобы спать спокойно?
😊Если знаете – молодцы. Если нет, мы подскажем.
☝️КНАУФ-ПРОФИЛЬ ПОТОЛОЧНЫЙ 60х27 применяется для формирования каркаса подвесных потолков. И для облицовок КНАУФ. Вот такие вот у нас унифицированные продукты👌
Толщина стали в 0,6 мм, влияет на прочность конструкции, а так же обеспечивает надёжное удержание шурупа в профиле.
❓«А что не так с профилем 0,4 мм, и дешевле, и на вид такой же?» – спросите вы.
Мы ответим: «Хлипкий каркас с болтающимися крепежами,собранный из «тонких» профилей, создаёт реальную угрозу вашей жизни».
👉КНАУФ-ПРОФИЛИ соответствуют ТУ, защищены от коррозии благодаря цинковому покрытию, имеют четкую геометрию.
Используя его, вы забудете, как о «еле дышащем» каркасе, так и трещинах на стыках КНАУФ-листов.
Используйте качественные материалы.
Используйте КНАУФ.
❗️Цена:
КНАУФ-Профиль потолочный 3000х60х27х06мм 8 717сум/п.м.
Указана брутто-цена с учётом НДС.
Действительна до 31.12.2020 г.
Сайт|Facebook|Instagram
#knaufuzbekistan#profil
👷♂️KNAUF profillarini uzaytirgich bu - o'rnatish ishlarini ham tezlashtiradigan, ham soddalashtiradigan betakror aksessuar.
☝️Qolib ketgan profillarni ulash va ishlatilish uchun qo'llashga imkon beradi.
👌KNAUF PSh 60x27 profillarini ulashda osma shiftlar sinchlarining yaxlitligini saqlaydi.
Texnik xususiyatlari:
Po'lat qalinligi 0,5 mm
100 donadan qadoqlangan.
❗️Shiftlaringizning ishonchli ekanligiga amin bo'ling, to'g'ri jamlovchi mahsulotlardan foydalaning.
KNAUF-dan foydalaning.
- - - - -
👷♂️Удлинитель профилей КНАУФ является незаменимым аксессуаром ускоряющим и упрощающим монтажные работы в разы.
☝️Позволяет применять остатки профилей для их соединения и использования.
👌Сохраняет в целостности каркасы подвесных потолков при соединении КНАУФ-профилей ПП 60х27.
Технические характеристики:
Толщина стали 0,5 мм
Упакован по 100 шт.
❗️Будьте уверены в надежности своих потолков, используйте правильные комплектующие.
Используйте КНАУФ.
Сайт|Facebook|Instagram
#knaufuzbekistan#profil
👷♀️Foydalanish paytida KNAUF pardevorlarining burchaklari va qirralarini himoya qilish uchun KNAUF burchakni himoyalovchi profilidan foydalaning.
Aralashmani (suvoq) konstruksiyaning burchagiga surtish profilning sirtga mahkam yopishishini taʼminlaydi.👌
Texnik xususiyatlari
BH 35/35 kesimi: 35x35 mm;
uzunligi: 3000 mm;
Sifatli materiallardan foydalaning.
KNAUFʼdan foydalaning.
- - - - -
👷♀️Чтобы защитить проёмы и торцы КНАУФ-перегородок во время эксплуатации используйте КНАУФ-профиль углозащитный.
Нанесение раствора (штукатурка) на угол конструкции обеспечивает прочное сцепление профиля с поверхностью.👌
Технические характеристики
Сечение ПУ 35/35: 35x35 мм;
длина: 3000 мм
#knaufuzbekistan#profil#rotband
Mansarda imoratlari – bu shunchaki boloxona emas, balki shinam xonadir.
Uni nima bilan qoplash mumkin?
KNAUF-Sapfir – maqbul yechim!
Nega?
Batafsil: https://knauf.uz/qr/UWJFScWz
- - - - -
Мансардное помещение – это не просто чердак, а уютная жилая комната.
Но чем же ее обшить?
Идеальным решением станет КНАУФ-Сапфир!
Почему?
Подробнее: https://knauf.uz/qr/UWJFScWz
YouTube
Instagram
Telegram
#knaufuzbekistan
#sapfir
#profil
Mansarda imoratlari – bu shunchaki boloxona emas, balki shinam xonadir.
Uni nima bilan qoplash mumkin?
KNAUF-Sapfir – maqbul yechim!
Nega?
Batafsil: https://knauf.uz/qr/UWJFScWz
- - - - -
Мансардное помещение – это не просто чердак, а уютная жилая комната.
Но чем же ее обшить?
Идеальным решением станет КНАУФ-Сапфир!
Почему?
Подробнее: https://knauf.uz/qr/UWJFScWz
YouTube
Instagram
Telegram
#knaufuzbekistan
#sapfir
#profil