Установить свойства виджета в 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
Hamster Kombat "easy money" bo‘lmasligini ko‘rsatib berdi
Bu hafta xalqaro birjalarda Hamster Kombat tokeni bilan savdolar boshlandi.
Dastlab vaziyat nisbatan yaxshi edi (masalan, Binance’da HMSTR $0,013 edi), ammo keyin narxlar keskin pasayib ketdi.
Hozirda token $0,006 dan savdo qilinmoqda. Bu taxminan 86 so‘m atrofida.
Agar barcha ishtirokchilar 100 000 tadan ortiq token olganida, narxni yomon emas desa ham bo‘lardi.
Ammo bu uchun millionlab dollarlik likvidlik kerak, u esa yo‘q. Shuning uchun ko‘pchilik 5000 tadan kam token oldi.
Natijada bir necha oy davomida topshiriqlarni bajarish, reklamalarni ko‘rish va boshqa faoliyatlar $15-25 daromad keltirdi.
Biroq O‘zbekistonda buni ham olishning iloji yo‘q
Token — bu kriptoaktiv, uni faqat mahalliy kripto-birja va mahalliy kripto-do‘konlarda sotib olish va sotishga ruxsat beriladi. U yerda esa HMSTR yo‘q. Paydo bo‘lishi ham ehtimoldan uzoq.
Boshqa barcha usullar noqonuniy.
Firibgarlar faollashdi
Bizda Hamster Kombat juda ommalashgan — O‘zbekiston unga eng yuqori qiziqish qayd etilgan uch mamlakat orasida (qolgan ikkitasi Nigeriya va Rossiya. Juda ramziy).
Shuning uchun hozir "Biz hamsterlarni sotib olishga tayyormiz. Har biri uchun 1 dollar. Faqat kartangiz raqamlari va SMS orqali keladigan kodni yuborishingiz kerak", deydigan odamlar paydo bo‘lgani ajablanarli emas.
Bu usul bilan "xaridorlar" shunchaki pulni o‘g‘irlab, g‘oyib bo‘lishlarini aytish ortiqcha.
Revolyutsiya yuz bermadi
Pavel Durov Hamster Kombatni targ‘ib qilganda, bu blokcheyn va mini-ilovalarning yangi davri boshlanishi ekanligini aytgan edi.
Ammo aksincha bo‘lganga o‘xshaydi — juda ko‘p odamlar hech bo‘lmaganda $100 topishga umid qilishgani uchun hafsalalari pir bo‘ldi.
Biroq bu vaziyatning ijobiy tomoni ham bor — u "easy money" bo‘lmasligini yaqqol ko‘rsatib berdi.
Shunisiga ham rahmat.
credit: @beshtorr
#vaziyat
@kreativ_reklamalar
Nega "Magnum" O‘zbekistondan ketishga qaror qildi
Qozog‘istonlik "Magnum" supermarketlar tarmog‘i O‘zbekistondan ketayotgani haqidagi xabarlarni ko‘rgan bo‘lsangiz kerak.
Haqiqatan ham, do‘konlar yopilmoqda, xodimlar soni qisqartirilmoqda, tovarlar sotilmoqda.
Kompaniyaning o‘zi bu haqda hech qanday izoh bermayapti, ammo aniq ko‘rinib turibdiki, buning sababi natijalardadir — ular kutilganidek bo‘lmadi.
O‘sish yo‘q. Bu esa eng muhimi
O‘zbekistondagi "Magnum" zarar ko‘rib ishlaydigan korxonadir.
2023-yilda zararlar 88 milliard so‘mni tashkil etgan bo‘lsa, 2024-yilda ularni 71 milliard so‘mgacha kamaytirishga erishildi.
Biroq zararlarning o‘zi qo‘rqinchli emas — barcha chakana sotuvchilar dastlabki bir necha yil davomida zarar ko‘rib ishlaydi, bu tabiiy holat.
Muaamo shundaki, "Magnum" O‘zbekistonda o‘smayapti.
2024-yilda kompaniya 230 milliard so‘m daromad oldi — bu 2023-yilga nisbatan atigi 6 foizga ko‘pdir.
⏺ Birinchidan, bu bozorni endigina o‘zlashtirayotgan va kengayishga katta mablag‘ sarflayotgan biznes uchun juda kam o‘sish.
⏺ Ikkinchidan, bu barcha chakana sotuvchilar orasidagi eng past ko‘rsatkichlardan biri.
Taqqoslash uchun: "Olma" o‘sha yili 233 foizga o‘sgan. Ha, bu tarmoq ham zarar ko‘rmoqda, lekin uning istiqboli bor, chunki o‘sish mavjud.
⏺ Uchinchidan, "Magnum" 2023-yilda 2023-yilda "Carrefour" do‘konlarini sotib olib, o‘z tarmog‘ini kengaytirdi.
Natijada, bu faqat xarajatlarning ko‘payishiga olib keldi (ular sezilarli darajada oshdi — 67 foizga).
Boshida, 2021-yilda, "Magnum" Toshkent bozoridagi muhim o‘yinchiga aylanishni maqsad qilgan edi. 2025-yilga kelib ham bu maqsadga erishilmadi.
Katta do‘konlar o‘zini oqlamayapti
Do‘konlarning joylashuvi, assortimenti, narx siyosati, logistika va boshqalar haqida ko‘p gapirish mumkin — biroq bularning barchasi oqibatdir.
Asosiy sababi shundaki, O‘zbekistonda yirik supermarketlar va gipermarketlar formati biznes o‘zini o‘zi ta’minlay oladigan darajada talab qilinmayapti.
Shuning uchun bugunning o‘zida 5 ta gipermarket ochishi mumkin bo‘lgan "Korzinka" butunlay boshqa yo‘nalishda harakat qilmoqda va uy yonidagi do‘konlarga sarmoya kiritmoqda.
Ehtimol, "Magnum"ning o‘zi ham bularning barchasini sezgan bo‘lsa kerak, chunki 2024-yilda 10 ta yangi do‘kon ochish rejalari shunchaki reja bo‘lib qoldi. Buning o‘rniga, aksincha, bittasi yopildi.
Ha, kompaniya rahbariyati O‘zbekiston biznesiga pul quyishni davom ettirishi mumkin edi, lekin nima keragi bor?
Natijalar aniq ko‘rsatmoqdaki, pul o‘sishga yo‘naltirilayotgan bo‘lsa-da, amalda o‘sish kuzatilmayapti.
Bunday sharoitda ikki yo‘l bor edi — hammasini "portlatib" qaytadan boshlash yoki shunchaki chiqib ketish.
Chamasi, ular ikkinchisini tanlashgan — bu og‘riqli, ammo zarur qaror.
Foto: Ahmad Muhammadov / Kursiv Uzbekistan
@beshtorr
#bozor#kompaniyalar#vaziyat#savdo