Установить свойства виджета в 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
Eski WinRAR muammosi
#yechim
ℹ️ Kompyuter Savodxonligi bo'yicha yozilayotgan kursda eski arxiv dasturlaridan foydalansak muammolar yuzaga kelishi mumkin deb aytgan edim, lekin namuna ko'rsatolmagan edim.
😅 Kecha tasodifan men "kutgan" muammoga duch keldim va tezlik bilan videoga oldim, kursga ham qo'shdim, sizlarga ham ulashmoqchiman.
🔧 Muammo yuzaga kelishiga sabab arxivni tayyorlagan insonning arxiv dasturi yangi, ochmoqchi bo'lgan odamning dasturi esa eski bo'lishidan bo'lishi mumkin. Doimo arxiv dasturini yangisini ishlating.
💻 Kompyuterni birga o'rganamiz ⤵️
TelegramIYouTube
Keraksiz dasturni kompyuter yonganda avtomatik ishga tushishini o'chirish!
#yechim
ℹ️ Shu sozlamani sozlab qo'ysangiz kompyuter yonganida faqat siz istagan dasturlar avtomatik ishga tushadi.
✅ Bu esa kompyuterni tezroq ishlashiga ham ta'sir ko'rsatadi.
💻 + 🅰 ga msconfig deb yozdik.
👨🏫Kompyuterni professionallardan o'rganing!
💻 Kompyuterni birga o'rganamiz ⤵️
TelegramIYouTube
Hamma fayl yuklanishini o'chirish [Telegram]
#yechim
ℹ️ Kompyuterdagi telegramda hamma fayllarni yuklashini o'chirish uchun quyidagi manzilga kiriladi:
⚙️ Settings > Advanced > Automatic media download joyidagi hammasini o'chirasiz. Bo'ldi!
💻 Kompyuterni birga o'rganamiz ⤵️
TelegramIYouTube
Eski WinRAR muammosi
#yechim
ℹ️ Kompyuter Savodxonligi bo'yicha yozilayotgan kursda eski arxiv dasturlaridan foydalansak muammolar yuzaga kelishi mumkin deb aytgan edim, lekin namuna ko'rsatolmagan edim.
😅 Kecha tasodifan men "kutgan" muammoga duch keldim va tezlik bilan videoga oldim, kursga ham qo'shdim, sizlarga ham ulashmoqchiman.
🔧 Muammo yuzaga kelishiga sabab arxivni tayyorlagan insonning arxiv dasturi yangi, ochmoqchi bo'lgan odamning dasturi esa eski bo'lishidan bo'lishi mumkin. Doimo arxiv dasturini yangisini ishlating.
💻 Kompyuterni birga o'rganamiz ⤵️
TelegramIYouTube
Windows urishda disklarni ko'rmasligi
#yechim
Ushbu arxivni arxivdan chiqarib ichidagi papkani fleshkaga yoki usb hardga tashab turib, Загрузить драйвер ni bosib shu faylni ko'rsatib Далее tugmasini bosilsa bo'ldi.
💻 Kompyuterni birga o'rganamiz ⤵️
TelegramIYouTube
Windows urishda disklarni ko'rmasligi
#yechim
🚫Muammo: Ba'zan Windows urishda Boot menyuga kirganda windows urish uchun disklar ko'rinmaydi yoki drayverni yukla kabi muammolar chiqib turadi.
✅Yechim:Ushbu arxivni arxivdan chiqarib ichidagi papkani fleshkaga yoki usb hardga tashab turib, Загрузить драйвер ni bosib shu faylni ko'rsatib Далее tugmasini bosilsa bo'ldi.
💻 Kompyuterni birga o'rganamiz ⤵️
TelegramIYouTube
Internetim ishlamayapti? Qanday ishlatay?
#yechim
ℹ️ Ba'zida yangi Windows o'rnatganimizda yoki nimadir sababli internetimiz ishlamay qoladi. Ko'pincha bunga kerakli drayverlarni yo'qligi sabab bo'ladi. Muammoni aniqlash uchun alohida videodarsimiz bor. Agar sizda ham muammoga drayver sababchi bo'lsa quyidagi yechimdan foydalaning.
✅ Yechim:
Telefon, boshqa kompyuter yordamida ushbu dasturni yuklab oling va interneti ishlamayotgan kompyuterga o'tkazing. Dasturni odatdagidek o'rnating. Ushbu dastur ichida internetni ishlashi uchun kerak bo'lgan barcha draverlar mavjud: SamDrivers 20.12 LAN (x32/x64)661 MB
⚠️ Bu dasturni boshqa drayver dasturlaridan farqi: ishlatish uchun internet kerak emas, ichida faqat internetga oid drayverlarni borligi uchun ham fayl hajmi kichikroq.
💻 Kompyuterni birga o'rganamiz ⤵️
Telegram I YouTube I Insta I TikTok
Microsoft Office dasturlarida vkladkalar
#yechim
😎 Sizning ofis dasturingizda ham hamma hujjatlar shu ko'rinishda joylashishini xohlasangiz Office Tab dasturini o'rnating.
✅Office Tab dasturini yuklash + o'rnatish bo'yicha video.
💻 Kompyuterni birga o'rganamiz ⤵️
TelegramIYouTubeIGuruhIXarita
Ochilmayotgan, format qilinmayotgan fleshkani tuzatish
#yechim
ℹ️ Ba'zida shunday bo'ladiki kompyuter fleshkangizni ochmaydi ham format ham qilaman desangiz o'xshamaydi. Bunga sabab esa kompyuteringizga fleshka haqidagi ma'lumotlar (o'lchami, format turi va h.k.) yetib kelmayotgani bo'lishi mumkin.
✅ Yechim:
Win+R ga diskmgmt.msc ni yozamiz, kirib fleshkamizga yangi tom yaratamiz bo'ldi. Sinab ko'ring 😉
💻 Kompyuterni birga o'rganamiz ⤵️
Telegram I YouTube I Insta I TikTok