Установить свойства виджета в 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
#Nókis rayonı
Xalıq penen ushırasıw
Qaraqalpaqstan Respublikası Transport ministrı orınbasarı B.Seytmuratov taraw qánigeleri menen birgelikte Nókis rayonı "Baxanshaqlı" MPJ aymaǵındaǵı Mádeniyat awılı puqaraları menen ushırastı.
Ushırasıwǵa aymaq turǵınları hám Nókis rayonı aymaǵında transport tarawında xızmet kórsetip atırǵan jolawshı tasıwshı kárxana basshıları qatnastı.
Ushırasıw dawamında puqaralar tárepinen berilgen múrájatlar taraw qánigeleri tárepinen dodalanip, tiyisliligi boyınsha sol jerdiń ózinde unamlı tárizde sheshim qabillandı.
Múrájat tiykarında Nókis rayonınan "Aqmańǵıt -Mádeniyat awılı" jónelisi boyınsha eksperement tárizde avtotransportlar jolǵa qoyılatuǵın boldı.
-----------
#Nukus tumani
Xalq bilan uchrashuv
Qoraqalpog‘iston Respublikasi Transport vaziri o‘rinbosari B.Seytmuratov soha mutaxassislari bilan birgalikda Nukus tumani "Baxanshaqli" MFY hududidagi Madaniyat qishlog‘i fuqarolari bilan uchrashdi.
Uchrashuvda hudud aholisi va Nukus tumani hududida transport sohasida xizmat ko‘rsatayotgan yo‘lovchi tashuvchi korxona rahbarlari ishtirok etdi.
Uchrashuv davomida fuqarolar tomonidan berilgan murojaatlar soha mutaxassislari tomonidan muhokama qilinib, tegishliligi bo‘yicha joyida ijobiy tarzda qaror qabul qilindi.
Murojaat asosida Nukus tumanidan "Oqmang‘it - Madaniyat qishlog‘i" yo‘nalishi bo‘yicha tajriba tariqasida avtotransportlar yo‘lga qo‘yiladigan bo‘ldi.
Instagram |🌐 sayt |✉️telegram |📱facebook|📱twitter
#Transport#Qadaǵalaw#Nókis
️ Nókis qalasındaǵı avtobuslarda tosıqsız ortalıq úyrenildi!
️Ózbekstan Mayıplar associaciyası Qaraqalpaqstan Respublikası aymaqlıq bólimi, Sociallıq inspekciyanıń Qaraqalpaqstan Respublikası basqarması hám Transport qadaǵalaw inspekciyası Avtomobil hám suw transportında qadaǵalaw Qaraqalpaqstan Respublikası aymaqlıq inspektorları qatnasıwında Nókis qalasında gezektegi reyd ilajları ótkerildi.
➤ Monitoring dawamında 24A-sanlı "Arqa - Batıs avtovokzal - Bereketli jel kóshesi" hám 7A-sanlı "Nókis qalalıq sawda kompleksi - Arqa - Batıs avtovokzal" avtobus jónelisleri qamtıp alındı:
Úyreniw dawamında ayırım aydawshılardıń mayıplıǵı bolǵan jolawshılarǵa itibarsızlıǵı, toqtaw belgilerine itibar bermewi hám mayıplıq arbasınan paydalanıwshı jolawshılarǵa panduslardı túsirip beriw boyınsha kónlikpeleri jetispeytuǵını baqlandı.
Jámietlik avtobuslarda málimleme monitorlarınıń sazlıǵı, aydawshılardıń bándirgi qaǵıydalarına ámel etiwi hám jolawshılarǵa kórsetilgen ámeliy járdem jaǵdayları unamlı bahalandı.Anıqlanǵan hár bir jaǵday boyınsha aydawshılar menen profilaktikalıq sáwbet ótkerildi.
——————————-
#Transport#Nazorat#Nukus
Nukus shahridagi avtobuslarda to‘siqsiz muhit o‘rganildi!
O‘zbekiston Nogironlar assotsiatsiyasi Qoraqalpog‘iston Respublikasi hududiy bo‘limi, Ijtimoiy inspeksiyaning Qoraqalpog‘iston Respublikasi boshqarmasi va Transport nazorati inspeksiyasi Avtomobil va suv transportida nazorat Qoraqalpog‘iston Respublikasi hududiy inspektorlari ishtirokida Nukus shahrida navbatdagi reyd tadbirlari o‘tkazildi.
➤ Monitoring davomida 24A-sonli "Shimol - G‘arb avtovokzal - Barakatli yel ko‘chasi" va 7A-sonli "Nukus shahar savdo majmuasi - Shimoliy - G‘arb avtovokzal" avtobus yo‘nalishlari qamrab olindi:
O‘rganish davomida ayrim haydovchilarning nogironligi bo‘lgan yo‘lovchilarga e’tiborsizligi, to‘xtash belgilariga e’tibor bermasligi va nogironlik aravachasidan foydalanuvchi yo‘lovchilarga panduslarni tushirib berish bo‘yicha ko‘nikmalari yetishmasligi kuzatildi.
Jamoat avtobuslarida axborot monitorlarining sozligi, haydovchilarning bekat qoidalariga rioya qilishi va yo‘lovchilarga ko‘rsatilgan amaliy yordam holatlari ijobiy baholandi.Aniqlangan har bir holat bo‘yicha haydovchilar bilan profilaktik suhbat o‘tkazildi.