Установить свойства виджета в 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
🖥Windows 10 da bir nechta ish stollarini qanday yaratish mumkin?
Ikkinchi ish stolini olish uchun Win + Tab tugmalar birikmasini bosing keyin Ish stolini yaratish-ni bosing va tayyor.
Faol ish stollari o'rtasida almashish Win + Ctrl + chap / o'ng strelka klaviatura yorlig'i yordamida amalga oshiriladi.😉
💬Birinchi raqamli windows blog | #windows10
Windows 10 da bir nechta ish stollarini qanday yaratish mumkin?
Ikkinchi ish stolini olish uchun Win + Tab tugmalar birikmasini bosing keyin Ish stolini yaratish-ni bosing va tayyor.
Faol ish stollari o'rtasida almashish Win + Ctrl + chap / o'ng strelka klaviatura yorlig'i yordamida amalga oshiriladi.😉
👉🏼Birinchi raqamli windows blog | #windows10
Windows 10 OT-da siz yarata olmaydigan papkalar
🗂 Ko'pchilik bilsa kerak, Windows operatsion tizimida "CON" nomi bilan papka ochib bo'lmaydi. Windows OT-da nafaqat "CON" balki, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 va LPT9 nomlari bilan ham papka yaratib bo'lmaydi.
ℹ️ Buning sababi shundaki, ushbu papka nomlari muayyan tizim vazifalarida foydalanish uchun saqlangan va agar siz bu nomlar bilan papkalar ochadigan bo'lsangiz, bu tizim chalkashliklariga olib kelishi mumkin.
P.S.: Ayrimlar Bill Gates-ni yoshligida "CON" laqabi chaqirishgani uchun, Windows OT-larda "CON" nomi bilan papka yaratib bo'lmaydi deb o'ylaydi 😂
👉Birinchi raqamli windows blog | #windows10
Windows 10 da bir nechta ish stollarini qanday yaratish mumkin?
Ikkinchi ish stolini olish uchun Win + Tab tugmalar birikmasini bosing keyin Ish stolini yaratish-ni bosing va tayyor.
Faol ish stollari o'rtasida almashish Win + Ctrl + chap / o'ng strelka klaviatura yorlig'i yordamida amalga oshiriladi.😉
@BigMasterUz_bot – universal ustoz!
👉🏼Birinchi raqamli windows blog | #windows10
Windows 10 ni zavod sozlamalariga qaytarish
1. Klaviaturada Win + I kombinatsiyalarini bosing
2.Обновление и безопасность va Восстановление
3.Начать tugmasini bosing
✅ Shundan so'ng fayllarni saqlagan holda kompyuterni zavod sozlamalariga qaytarishinggiz yoki butunlay o'chirib tashlashinggiz mumkin.
P.s:Agar post foydali bo'lsa reaksiya qoldiring.
👉🏼Birinchi raqamli Windows blog | #windows10 / #foydali
Windows 10 ni zavod sozlamalariga qaytarish
1. Klaviaturada Win + I kombinatsiyalarini bosing
2.Обновление и безопасность va Восстановление
3.Начать tugmasini bosing
✅ Shundan so'ng fayllarni saqlagan holda kompyuterni zavod sozlamalariga qaytarishinggiz yoki butunlay o'chirib tashlashinggiz mumkin.
P.s:Agar post foydali bo'lsa reaksiya qoldiring.
👉🏼Birinchi raqamli Windows blog | #windows10 / #foydali
Windows 10 ni zavod sozlamalariga qaytarish
1. Klaviaturada Win + I kombinatsiyalarini bosing
2.Обновление и безопасность va Восстановление
3.Начать tugmasini bosing
✅ Shundan so'ng fayllarni saqlagan holda kompyuterni zavod sozlamalariga qaytarishinggiz yoki butunlay o'chirib tashlashinggiz mumkin.
P.s:Agar post foydali bo'lsa reaksiya qoldiring.
👉🏼Birinchi raqamli Windows blog | #windows10 / #foydali
Ish stoliga Мой компьютер belgisini qanday qo'shish mumkin
1⃣ Ish stolida sichqonchaning o‘ng tugmachasini bosing va Персонализацияni tanlang
2⃣Темы bo'limiga o'ting va o'ng tomonda "Ish stoli belgisi parametrlari" menyusini bosing
3⃣Параметры значков рабочего столаni belgilang va применить tugmasini bosing
💻 Ushbu lifehack faqat Windows 10 foydalanuvchilari uchun.
P.s: Tan oling buni bilmasdinggiz 😁
👉🏼Birinchi raqamli Windows Blog | #foydali / #windows10
Ish stoliga Мой компьютер belgisini qanday qo'shish mumkin
1⃣ Ish stolida sichqonchaning o‘ng tugmachasini bosing va Персонализацияni tanlang
2⃣Темы bo'limiga o'ting va o'ng tomonda "Ish stoli belgisi parametrlari" menyusini bosing
3⃣Параметры значков рабочего столаni belgilang va применить tugmasini bosing
⚠️ Ushbu lifehack faqat Windows 10 foydalanuvchilari uchun.
P.s: Tan oling buni bilmasdinggiz 😁
👉🏼Birinchi raqamli Windows Blog | #foydali / #windows10
Windows 10 ni zavod sozlamalariga qaytarish
1. Klaviaturada Win + I kombinatsiyalarini bosing
2.Обновление и безопасность va Восстановление
3.Начать tugmasini bosing
✅ Shundan so'ng fayllarni saqlagan holda kompyuterni zavod sozlamalariga qaytarishinggiz yoki butunlay o'chirib tashlashinggiz mumkin.
P.s:Agar post foydali bo'lsa reaksiya qoldiring.
👉🏼Birinchi raqamli Windows blog | #windows10 / #foydali
Ish stoliga Мой компьютер belgisini qanday qo'shish mumkin
1⃣ Ish stolida sichqonchaning o‘ng tugmachasini bosing va Персонализацияni tanlang
2⃣Темы bo'limiga o'ting va o'ng tomonda "Ish stoli belgisi parametrlari" menyusini bosing
3⃣Параметры значков рабочего столаni belgilang va применить tugmasini bosing
⚠️ Ushbu lifehack faqat Windows 10 foydalanuvchilari uchun.
P.s: Tan oling buni bilmasdinggiz 😁
👉🏼Birinchi raqamli Windows Blog | #foydali / #windows10