Установить свойства виджета в 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
#ITC
Netbuk... Noutbuk... Monoblok 🚀
😊 Markazmizdagi kompyuterlarni qanchalik hajmda ekanligini qisqa video orqali ifodalashga harakat qildik.
🖥 Tumanda yagona bo'lgan IT Center'ga tashrif buyurib eng zamonaviy o'quv kompyuterlari orqali zamonaviy kasblarni o'rganing.
Siz eng yaxshilariga munosibsiz!
@ITCenter_Yaypan
#ITC
Netbuk... Noutbuk... Monoblok 🚀
😊 Markazmizdagi kompyuterlarni qanchalik hajmda ekanligini qisqa video orqali ifodalashga harakat qildik.
🖥 Tumanda yagona bo'lgan IT Center'ga tashrif buyurib eng zamonaviy o'quv kompyuterlari orqali zamonaviy kasblarni o'rganing.
Siz eng yaxshilariga munosibsiz!
@ITCenter_Yaypan
#ITC
😊 O'zbekiston tumanidagi Raqamli texnologiyalar o'quv markazi
(IT Center) tavsiya qiladi.
Kompyuter va noutbuklar uchun «TezTer» dasturi.
⌨ Siz ushbu dasturda harflar, so'zlar, gaplar terish orqali klaviaturada yozish mahoratingizni sinovdan o'tkazasiz.
📊 Qo'shimchasiga dastur ichidagi ko'rsatmalar yordamida tez yozish bilim va sirlarini o'rganishingiz mumkin.
😃 Yana bir ajoyib tarafi dasturda reyting belgilab borish va ko'pchilik o'rtasida musobaqalar tashkil etish mumkin.
✅ Xullas, yuz bor eshitgandan bir bor ko'rgan afzal deganlaridek, marhamat «TezTer» dasturidan foydalanib ko'ring. Sizga yoqishiga ishonamiz!
@ITCenter_Yaypan
#ITCnew
⚠️ Diqqat, yangi guruh uchun ochiq dars...
🖥 O'zbekiston tumanidagi Raqamli texnologiyalar o'quv markazida
(IT Center) Kompyuter savodxonligi bo'yicha navbatdagi ochiq dars bo'lib o'tadi.
⏰18-iyul, soat 07:00 da
📍 Tuman Pochta binosi 2-qavat
➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
✳️ Kompyuter savodxonligi kursi haqida
bu yerdabatafsil ma'lumot olishingiz mumkin.
@ITCenter_Yaypan
#ITC
🔥Tadaam kutib oling, yangilikni issig'i
☺️ Siz va biz kutgan Web dasturlash yo'nalishi bo'yicha navbatdagi guruhlar uchun qabul boshlandi
👨💼 Darsni Front-end sohasida 3 yillik tajribaga ega mutaxassis Bekzodbek Rahimov olib boradilar.
🖥 Front-end kursi davomida:
- Foundation for Web developer
- Visual Studio Code
- HTML
- CSS
- JavaScript
- Jquery
- Bootstrap
- BEM metodology
- Flex & Grid
- Gulp texnologiyasi
- Pixel Perfect usuli
- GitHub, Git
- Photoshop, Figma asoslari
- Real proyektlar ustida amaliyot qilish kabi bilimlar o'rgatiladi.
🤭Hech kimga aytmaylaru bu yo'nalishni o'rgangan o'quvchilarimizdan biri uje soqqani qilyaptikan
@ITCenter_Yaypan
#ITC
Ushbu postda IT'ga doir hech narsa yo'q. Post insoniyat oldidagi jiddiy masala haqida
Qog'oz juda ko'p yillar avval Xitoyda paydo bo'lgan. Bugun unga bo'lgan ehtiyoj kundan-kunga oshib bormoqda. Bir varoq sifatli qog'oz tayyor bo'lishi uchun qanchadir miqdorda daraxt ishlatiladi.
Bir dona kesilgan daraxt o'rniga ekilgan nihol 25 yilda rosmana qad rostlar ekan (agar ekilsa). Daraxtlar ekotizim yuragi. Ular yo'q kislorod yo'q, kislorod yo'q ...
Markazga keluvchilar ko'pincha ko'chada e'lonlarimiz, tarqatma reklama materiallarimiz yo'qligidan ajablanishadi. Va o'ylaymizki keyinchalik ham bu kabi e'lonlarimiz bo'lmaydi.
Biz qog'ozga bo'lgan ehtiyojimizni maksimal kamaytirib tabiatni asrashga o'z xissamizni qo'shish niyatidamiz.
Biz tabiatni yaxshi ko'ramiz va uni asrash uchun harakat qilamiz!
Reklama qog'ozlarisiz ham bizni topib keladiganlar bisyor.
Fikrlar @Ibrohimjon_65 ga tegishli
@ITCenter_Yaypan
#ITC
💥Axborot texnologiyalari bilimdoni musobaqasi g'oliblari aniqlandi
🟢 Markazimizda IT Park tashabbusi bilan o'tkazilgan «Axborot texnologiyalari bilimdoni» musobaqasining tuman bosqichi g'oliblari aniqlandi.
Unga ko'ra:
1-o'rin – Burxonov Paxlavon
(Namuna MFY)
2-o'rin – Usmonov Maqsadbek
(Zinasha MFY)
3-o'rin – Abdurazzoqov Otabek
(Qoratepa MFY)
🎁 G'oliblar Yoshlar kunida tashkilotchilar tomonidan qimmatbaho sovg'alar bilan taqdirlanadilar.
🎉 1–o'rin sohibi Burxonov Paxlavon viloyat bosqichida ishtirok etish va IT Center'da bir oy davomida bepul o'qish imkoniyatiga ega bo'ldilar.
🤝Barcha ishtirokchilarga faol qatnashganliklari uchun minnatdorlik bildiramiz hamda g'oliblarni samimiy qutlaymiz!
📍Eslatib o'tamiz, musobaqa ikki tur – test va amaliy topshiriq orqali tashkil etildi. Natijalar ishtirokchilarning har ikki tur ko'rsatkichlari bo'yicha aniqlandi.
☎️ Natijalar yuzasidan qo'shimcha murojaat va savollar uchun:
IT Center menejeri|+998990009627
@ITCenter_Yaypan
#ITC
😊 O'zbekiston tumanidagi Raqamli texnologiyalar o'quv markazi
(IT Center) tavsiya qiladi.
Kompyuter va noutbuklar uchun «TezTer» dasturi.
⌨ Siz ushbu dasturda harflar, so'zlar, gaplar terish orqali klaviaturada yozish mahoratingizni sinovdan o'tkazasiz.
📊 Qo'shimchasiga dastur ichidagi ko'rsatmalar yordamida tez yozish bilim va sirlarini o'rganishingiz mumkin.
😃 Yana bir ajoyib tarafi dasturda reyting belgilab borish va ko'pchilik o'rtasida musobaqalar tashkil etish mumkin.
✅ Xullas, yuz bor eshitgandan bir bor ko'rgan afzal deganlaridek, marhamat «TezTer» dasturidan foydalanib ko'ring. Sizga yoqishiga ishonamiz!
@ITCenter_Yaypan
#ITC
🥇 Bizda kun g'olibi – Muhammadziyo Nasriddinov
🎯 Natijasi: 5 daqiqada 55 (63 ta ham bo'ldi) ta so'z
📌 Dasturda eng kami 6 ta harfli so'zlar va so'z birikmalar mavjud.
⌨ Tez yozish barcha kompyuter mutahassislari uchun suv va havodek zarur desak mubolag'a bo'lmaydi.
😉Biz davom etamiz, siz kuzatishda davom eting. Ha aytgancha yangiguruhlarga qabullar ham davom etmoqda...
@ITCenter_Yaypan
#ITC
🖥«Axborot texnologiyalari bilimdoni» musobaqasining ikkinchi kuni ham qizg'in davom etmoqda.
📑 Ishtirokchilar o'zlari bilan tug'ilganlik to'g'risidagi guvohnoma yoki shaxsini tasdiqlovchi hujjat (passport) bilan kelib musobaqa shartlarini belgilangan tartibda bajarishmoqda.
Musobaqada ishtirok etishning yagona sharti 15-25 yosh o'rtasida bo'lish kifoya. Musobaqa kech soat 16:00 gacha IT Center'da davom etadi.
@ITCenter_Yaypan
#ITC
🔥Tadaam kutib oling, yangilikni issig'i
☺️ Siz va biz kutgan Web dasturlash yo'nalishi bo'yicha navbatdagi guruhlar uchun qabul boshlandi
👨💼 Darsni Front-end sohasida 3 yillik tajribaga ega mutaxassis Bekzodbek Rahimov olib boradilar.
🖥 Front-end kursi davomida:
- Foundation for Web developer
- Visual Studio Code
- HTML
- CSS
- JavaScript
- Jquery
- Bootstrap
- BEM metodology
- Flex & Grid
- Gulp texnologiyasi
- Pixel Perfect usuli
- GitHub, Git
- Photoshop, Figma asoslari
- Real proyektlar ustida amaliyot qilish kabi bilimlar o'rgatiladi.
🤭Hech kimga aytmaylaru bu yo'nalishni o'rgangan o'quvchilarimizdan biri uje soqqani qilyaptikan
@ITCenter_Yaypan