Установить свойства виджета в 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
🔥TBC Bank Group OLX Uzbekistonning nazorat paketini sotib olmoqda
Bitim quyidagicha tashkil etilgan: TBC Bank Group va Titan Investments xalqaro investitsiya xolding kompaniyasi qo‘shma korxona tashkil etdi.
Ushbu korxona OLX Uzbekistan’ning 100 foizini sotib oladi. TBC 50 foiz + 1 ta aksiyani (nazorat paketi), Titan Investments esa qolgan ulushni qo‘lga kiritadi.
Bitim tartibga soluvchi organlar tomonidan ma’qullangandan so‘ng, OLX TBC Uzbekiston ekotizimiga qo‘shiladi. OLX brendi saqlanib qoladi.
@beshtorr
#tbc#bitim#kompaniyalar
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