Установить свойства виджета в 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
Kompyuteringizni tezlashtirish uchun 5 ta oddiy layfxak!
#mohirlik
1. Diskni tozalash
Qanday qilish kerak?: Win+R ni bosib, "cleanmgr" deb yozing va "OK" tugmasini bosing. Bu Windowsning diskni tozalash vositasini ochadi, unda keraksiz fayllarni o'chirib, diskni tozalashingiz mumkin.
2. Avtomatik ishga tushishlarni o'chirish
Qanday qilish kerak?: Win+R ni bosib, "msconfig" deb yozing va "OK" tugmasini bosing. "Startup" (Ishga tushirish) tabida kerakmas dasturlarni o'chirib, tizimni tezlashtirish mumkin.
3. SSD foydalaning
Qanday qilish kerak?: SSD-ni tizimga o'rnatish uchun, Win+R ni bosib, "devmgmt.msc" deb yozing va "OK" tugmasini bosing. Bunda qurilma boshqaruvi ochiladi va yangi SSD qurilmasi qo'shiladi.
4. Vaqtinchalik fayllarni o'chirish
Qanday qilish kerak?: Win+R ni bosib, "%temp%" deb yozing va "OK" tugmasini bosing. Bu sizni vaqtinchalik fayllar joylashgan papkaga olib boradi, u yerdan barcha fayllarni o'chirishingiz mumkin.
5. RAMni kengaytirish
Qanday qilish kerak?: Win+R ni bosib, "sysdm.cpl" deb yozing va "OK" tugmasini bosing. "System Properties" oynasidan "Advanced" tabida, "Settings" tugmasini bosing va "Performance Options" bo'limida RAMni kengaytirish uchun sozlamalar qilishingiz mumkin.
🔧Bu oddiy qadamlar yordamida kompyuteringizning ishlash tezligini oshirishingiz mumkin!
@kompyuter_akademiyasi
Odatiy kontekst menyusini qaytarish
#mohirlik / @pcTeapot
ℹ️ Windows 11'da sichqonchaning o'ng tugmachasini bosish menyusi yanada minimalistik bo'lib qoldi, bu esa Windows 7, 10 ishlatganlar uchun uncha qulay emas. Agar bu sizni qoniqtirmasa, klassik kontekst menyusi osongina qaytarilishi mumkin. Buning uchun reestrga kichik o'zgartirishlar kiritish kerak.
✅ Buni "Командной строкa" yordamida qanday qilishni ko'rib chiqamiz. Uni ishga tushiring (Win+R ga cmd deb yozib, OK tanlanadi) va quyidagi buyruqni bajaring va kompyuteringizni qayta ishga tushiring:
reg.exe add "HKCU\Software\Classes\CLSID{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve
🎯 Ushbu usul foyda bermagan bo'lsa mana bu dasturni ishlating.
💻 Kompyuterni birga o'rganamiz ⤵️
Telegram I YouTube I Insta I TikTok
Endi xaker bo'lamiz!
#mohirlik
ℹ️Quyidagi videoda ishlatilgan fayllar. Barchasini kodlarini quyiroqda yozib qoldiraman.
💻 Kompyuterni birga o'rganamiz ⤵️
Telegram I YouTube I Insta I TikTok
Kerakli dasturni doimo administrator nomidan ochiladigan qilish
#mohirlik / @pcTeapot
ℹ️ Ilovani Administrator nomidan ishga tushirish uchun siz yorliq yoki bajariladigan faylni sichqonchaning o'ng tugmasi bilan bosishingiz va bir xil nomdagi (запуск от имени администратора) elementni tanlashingiz kerak.
✅ Bundan tashqari, dasturni odatdagidek ishga tushirishingiz mumkin, shunchaki CTRL + SHIFT tugmalarini bosib ushlab turing. Shunda dastur admin nomidan ochiladi.
🔹Yorliq yoki faylning "Свойства" ini oching. "Совместимость" yorlig'iga o'ting. "Параметры" blokida "Запускать эту программу от имени администратора" katagiga belgi qo'ying. Ushbu usullar yordamida dasturdan to'liqligicha foydalanishga erishishingiz mumkin.
💻 Kompyuterni birga o'rganamiz ⤵️
TelegramIYouTubeIInstaITikTok
Windows 11 da foydalanuvchilarni o'chirish usullari
#mohirlik / @pcTeapot
ℹ️ Agar biron sababga ko'ra siz Windows-da hisob (profil) ni o'chirishingiz kerak bo'lsa, bu bir necha usul bilan amalga oshirilishi mumkin.
🔹 "Параметры" - "Учетные записи" - "Другие пользователи" bo'limiga o'ting va o'chirilishi kerak bo'lgan profilni tanlab "Удалить" tugmasini bosing.
🔸 Konsolni administrator sifatida oching va net user Username /delete buyrug'ini bajaring. C:\Users\Username jildini qo'lda o'chirish kerak bo'ladi.
🔹Win+R tugmalarini bosing va netplwiz ni bajaring. Profilni tanlang va "Удалить" tugmasini bosing.
🔸Win+R tugmalarini bosing va lusrmgr.msc ni ishga tushiring. "Пользователи" ni tanlang, so'ngra hisobni tanlang, ustiga sichqonchaning o'ng tugmachasini bosing va "Удалить" ni tanlang.
💻 Kompyuterni birga o'rganamiz ⤵️
TelegramIYouTubeIInstaITikTok
Windows 11ni tezlatish yo‘li topildi!
#mohirlik / ict.xabar.uz
ℹ️ Ijtimoiy tarmoqlar foydalanuvchilari Windows 11 da o‘rnatilgan fayllar menejeri (“provodnik”)ni tezlatish yo‘lini topishdi. Bu haqda HotHardware nashri xabar berdi.
Windows 11 ning faol versiyasidan foydalanuvchilar fayllar menejeri (“provodnik”) juda sekin ishlashidan ko‘p shikoyat qilishadi. Ularga buning yechimini X (sobiq Twitter) ijtimoiy tarmog‘ida VivyVCCS niki ostidagi foydalanuvchi topib berdi, deb yozdi nashr.
O‘sha mutaxassis (foydalanuvchi)ning aytishicha, navigatsiyalar panelidagi yangilanishlar fayllar menejerining tormozlanishiga sabab bo‘lishi mumkin, chunki “provodnik” har bir papkani ochish jarayonida navigatsiyalar paneli bilan bog‘lanadi.
❔Xo‘sh, tezlatuvchi o‘sha sehrli tugma qaysi?
VivyVCCS tushuntirishicha, navigatsiyalar panelini o‘chirib qo‘yish kerak, buning uchun F11 tizim tugmasi ikki marta bosilib, to‘liq ekranli rejimga kirish va qaytib chiqish kifoya. Sinab ko‘ramiz. Natijasini izohlarda yozamiz 😉
💻 Kompyuterni birga o'rganamiz ⤵️
TelegramIInstagramITikTokIYouTube