Установить свойства виджета в 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
☝️Knaufning turli xil tizimlarida konstruktsion material sifatida gipskartondan foydalanish soddaligi va o'zida yengil hajm, qulaylik va amaliylikni mujassamlashtirgan mukammal iste'mol xususiyatlari KNAUF-qoplamalarini eng ilg'or g'oyalaringizni ro'yobga chiqarish uchun ideal yechimga aylantiradi.😊
⠀
- - - - -
⠀
☝️Простота применения гипсокартона в качестве конструкционного материала в различных системах КНАУФ и отменные пользовательские характеристики, которые включают в себя малый вес, комфорт и практичность, делают КНАУФ-листы идеальным решением для воплощения самых смелых ваших идей.😊
Cайт|Facebook|Instagram
#knauf#knaufuzbekistan#гипсокартон#dos
👷🏼♂️KNAUF-Rotband - universal gipsli suvoq.
⠀
🧐 Professionallar va yakkahol suvoq ishlari sevuvchilarning tanlovi.
⠀
☝️Chunki undan foydalanish juda oson va siz kutgan natijalarga olib keladi.
- - - -
👷♂️КНАУФ-Ротбанд - универсальная гипсовая штукатурка.
⠀
🧐Выбор как профессионалов, так и любителей проштукатурить самому.
⠀
☝️Потому что проста в использовании и никогда не подведёт.
⠀
Cайт|Facebook|Instagram
#knaufuzbekistan#knauf#rotband#dos
Eldos Fazylbekovning mahsulotlarimizga ijod nuqtai nazaridan qarashlari.😊
⠀
Biz ajoyib juftlikning ijod mahsuliga aylangan plakatlar ketma-ketligini e’lon qilishni boshlaymiz.👆
⠀
Gips – KNAUF kompaniyasining negizi.💪
⠀
- - - -
⠀
Необычный взгляд на наши продукты от креативного Эльдос Фазылбеков.😊
⠀
Начинаем публикацию серии плакатов - результата крутого тандема.👆
⠀
Гипс - основа основ компании КНАУФ.💪
⠀
#knaufuzbekistan#knauf#rotband#dos
Сайт|Facebook|Instagram
🧐KNAUF-qoplamaning tutash joylariga mukammal ishlov berishchi?
⠀
☝️KNAUF-Fugen - universal gipsli shpaklyovka eng ishonchli va to’g’ri qaror.
⠀
😊Hattoki gipskartonlaringiz nuqsonlarga ega bo'lsa ham.
⠀
🚫Bizning KNAUF- qoplamamizda hech qanday nuqsonlar mavjud emas.
⠀
👷♂️KNAUF-Fugen va KNAUF-qoplama - 100% muvaffaqiyat.
⠀
- - - - -
⠀
🧐Идеальная заделка стыков КНАУФ-листов?
⠀
☝️Более, чем реально с помощью КНАУФ-Фуген - универсальной гипсовой шпаклёвкой.
⠀
😊Даже, если у ваших гипсокартонных листов есть дефекты.
⠀
🚫Которых нет у наших КНАУФ-листов.
⠀
👷♂️КНАУФ-Фуген и КНАУФ-лист - 100% успеха.
Сайт|Facebook|Instagram
#knauf#knaufuzbekistan#fugen#dos
👷🏼♂️Yuqori sifatli yuzalarning finish yakunlovchi ishlar uchun tayyor holati, yoriqlar va oq izlarning butunlay yo'qligi - bu KNAUF-Satengips, gipsli finish qoplamasi.
⠀
☝️Gipskarton qoplamaning tutash joylarini yopishda qo’llanilmaydi.
⠀
- - - -
⠀
👷🏼♂️Высококачественная поверхность готовая к финишной отделке, полное отсутствие трещин и белых следов при касании - это КНАУФ-Сатенгипс, шпаклевка гипсовая финишная.
⠀
☝️Не применяется для заделки стыков гипсокартонных листов.
Сайт|Facebook|Instagram
#knauf#knaufuzbekistan#satengips#dos
👷♂️KNAUF-Perlfix gips yelimi gipskarton qoplamalarini va izolyatsiyalovchi materiallarni notekis yuzali devorlarning gʻisht va beton asoslariga bevosita yopishtirish imkonini beradi.
⠀
☝️Shunday qilib, siz devorlarning yuzalarini tayanch karkaslarisiz tayyor holatga keltirib, maydondan katta yoʻqotishlar qilmasdan tekislashingiz mumkin.
⠀
- - - - -
⠀
👷♂️С помощью клея гипсового КНАУФ-Перлфикс появляется возможность приклеивания гипсокартонных листов и изоляционных материалов прямо на кирпичные и бетонные основания стен с неровной поверхностью.
⠀
☝️Таким образом, вы сможете выровнять поверхности стен без установки несущего каркаса, а значит, без больших потерь площади помещений.
⠀
Cайт|Facebook|Instagram
#knauf#knaufuzbekistan#Perlfix#dos
👷♂️KNAUF-Rotband Finish – ichki (suvoq) ishlar uchun ishlatiladigan gipsli shpaklyovka.
⠀
👌Beton devorlarni bo'yoqlar va boshqa dekorativ qoplamalar uchun tayyorlash, shuningdek sirtlarni to'ldirish uchun ajoyib echim.
⠀
☝️Gipskarton qoplamaning tutash joylarini yopishda qo’llanilmaydi.
⠀
- - - -
⠀
👷♂️КНАУФ-Ротбанд Финиш - шпаклёвка гипсовая финишная применяется для внутренних работ.
⠀
👌Отличное решение для шпаклевания тонким слоем бетонных стен и поверхностей под покраску и других декоративных покрытий.
⠀
☝️Не используется для заделки стыков гипсокартонных листов.
Сайт|Facebook|Instagram
⠀
#knaufuzbekistan#knauf
#rotbandfinish#dos
👷♂️KNAUF-HP Start gipsli suvogʻi yuqori darajada suvni tutib qolish qobiliyatiga ega;
👉U xatto namlikni tortuvchi yuzalarda va katta haroratlarda ham qurib qolmaydi va qavatlanmaydi.
☝️Suvoq ichki ishlov berish jarayonlarida ishlatish uchun moʻljallangan.
- - - - -
👷♂️Гипсовая штукатурка КНАУФ-ХП Старт обладает высокой водоудерживающей способностью;
👉Она не обезвоживается и не расслаивается даже на хорошо впитывающих влагу основаниях и при повышенных температурах.
☝️Штукатурка предназначена для внутренних работ.
Сайт|Facebook|Instagram
#knauf#knaufuzbekistan#HPStart#dos
👷♂️KNAUF-HP Start gipsli suvogʻi yuqori darajada suvni tutib qolish qobiliyatiga ega;
👉U xatto namlikni tortuvchi yuzalarda va katta haroratlarda ham qurib qolmaydi va qavatlanmaydi.
☝️Suvoq ichki ishlov berish jarayonlarida ishlatish uchun moʻljallangan.
- - - - -
👷♂️Гипсовая штукатурка КНАУФ-ХП Старт обладает высокой водоудерживающей способностью;
👉Она не обезвоживается и не расслаивается даже на хорошо впитывающих влагу основаниях и при повышенных температурах.
☝️Штукатурка предназначена для внутренних работ.
Сайт|Facebook|Instagram
#knauf#knaufuzbekistan#HPStart#dos
💪KNAUF PFT - suvoq mashinalari va qorishma nasoslari ishlab chiqarishda shubhasiz dunyoda yetakchi hisoblanadi.
⠀
👷🏼♂️KNAUF PFT G4 - oʻz segmentida birinchi boʻlib tezlik va sifatning yuqori standartlarini oʻrnatgan afsonaviy suvoq mashinasi.
⠀
🧐KNAUF-MP 75 gipsli suvogʻini qo’llashda mashinadan foydalanish qoʻl mehnatiga nisbatan ish jarayonini 3-4 baravar tezlashtiradi.
⠀
☝️Mukammallikka intilish bizning umumiy maqsadimizdir.
⠀
- - - - -
⠀
💪КНАУФ PFT - бесспорный мировой лидер в области производства штукатурных машин и растворных насосов.
⠀
👷🏼♂️КНАУФ PFT G4 - легендарная штукатурная машина, первой задавшая высокие стандарты скорости и качества в своем сегменте.
⠀
🧐Машинное нанесение гипсовой штукатурки КНАУФ-МП 75 это ускорение рабочего процесса в 3-4 раза в сравнении с ручным трудом.
⠀
☝️Стремление к совершенству-наша общая цель.
Сайт|Facebook|Instagram
⠀
#knauf#knaufuzbekistan#PFT#MP75#dos