Установить свойства виджета в 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
#Payshanba - Yoshlar kuni!
Bugun "Andijon suv ta'minoti" AJning Jalaquduq tumanidagi filiali rahbari Qahramonjon Turg‘unov yoshlar bilan uchrashdi. Dastlab tumandagi 2-umumta'lim maktabida buyuk sarkarda Amir Temur tavalludiga bag‘ishlangan filьm namoyish etildi. Ta'lim muassasasida o‘quvchilarga yaratilgan sharoitlar o‘rganilib, ular bilan ochiq muloqot tashkil etildi.
Shundan so‘ng "Bo‘ston" va "Yangi sor" mahallalarida istiqomat qiluvchi ishsiz yoshlarning bandligi ta'minlashga doir sa'y-harakatlar amalga oshirildi. Ayni paytga qadar bir nafar yosh doimiy ish joyiga ega bo‘ldi.
Ayni paytda yoshlar bilan uchrashuv va ochiq muloqotlar davom etmoqda.
"Andijon suv ta'minoti" AJ axborot xizmati
|Website|
🗝Cabinet
|🤖Bot|😄Telegram
|
💬Facebook|
🌐Instagram
|
📹YouTube |
🕊X
|💬Chat |
✅TikTok
#Payshanba - Yoshlar kuni!
Bugun Bo‘ston tumanida viloyat hokimi Abdurahmonov Shuhrat Qo‘shaqbayevich yoshlar bilan uchrashdi. Muloqot davomida yigit-qizlarni qiynab kelayotgan muammolar, xususan, ta'lim shartnoma to‘lovini qoplash, dehqonchilik uchun yer maydoniga ega bo‘lish, ish bilan ta'minlanish masalalarida murojaatlar qabul qilindi.
Tadbir davomida "Andijon suv ta'minoti" AJ direktori Dilshodbek Qo‘ldashev ham ishtirok etdi.
"Andijon suv ta'minoti" AJ axborot xizmati
|Website|
🗝Cabinet
|🤖Bot|😄Telegram
|
💬Facebook|
🌐Instagram
|
📹YouTube |
🕊X
|💬Chat |
✅TikTok
#Payshanba – Yoshlar kuni!
Bugun “Andijon suv ta'minoti” AJda “Payshanba – Yoshlar kuni” munosabati bilan shaxmat-shashka musobaqasi bo‘lib o‘tdi. Unda aktsiyadorlik jamiyatida faoliyat olib borayotgan yoshlar ishtirok etdilar.
Bu kabi tadbirlar yoshlarning aqliy salohiyatini oshirish bilan bir qatorda jamoadagi hamfikrlik, o‘zaro hamkorlik munosabatlarini ham shakllantirishga xizmat qiladi.
”Andijon suv ta'minoti” AJ axborot xizmati
|Website|
🗝Cabinet
|🤖Bot|😄Telegram
|
💬Facebook|
🌐Instagram
|
📹YouTube |
🕊X
|💬Chat |
✅TikTok
#Payshanba#Yoshlar_kuni
“Yoshlar kuni” doirasida dolzarb mavzularga bag‘ishlangan davra suhbati o‘tkazildi
Bugungi kunda yoshlar ta’lim va tarbiyasi davlat siyosatining dolzarb masalalaridan biriga aylanganligi hech kimga sir emas. Mamlakatimizda amalga oshirilayotgan barcha ijobiy o‘zgarishlar zamirida har tomonlama barkamol, jismonan sog‘lom, aqlan yetuk, mustaqil va ijodiy fikrlashga qodir, intellektual salohiyati yuksak yosh avlod to‘g‘risida g‘amxo‘rlik qilish ustuvor vazifa.
Aynan ushbu yo‘nalishdagi ishlar samaradorligini oshirish maqsadida haftaning har payshanba kuni vazirlik va idoralarda “Yoshlar kuni” etib belgilangan.
Joriy yilning 16-aprel kuni Transport vazirligi markaziy apparati majlislar zalida vazir o‘rinbosari I.Abdugafarov, Toshkent shahri Yakkasaroy tumani IIOFMB (ichki ishlar organlari faoliyatini muvofiqlashtirish bo‘limi) katta leytenanti B.Xalilov hamda jinoyat qidiruv bo‘limi bo‘linma boshlig‘i, katta leytenant U.Nurmatov ishtirokida “Yoshlar o‘rtasida jinoyatchilikning oldini olish va unga qarshi kurashish” mavzusida davra suhbati o‘tkazildi.
Batafsil
В рамках "Дня молодёжи" состоялся круглый стол на актуальные темы
Ни для кого не секрет, что сегодня образование и воспитание молодёжи стали одним из важнейших вопросов государственной политики. В основе всех позитивных преобразований, осуществляемых в нашей стране, лежит забота о всесторонне гармоничном, физически здоровом, интеллектуально зрелом, способном к самостоятельному и творческому мышлению молодом поколении с высоким интеллектуальным потенциалом.
Именно с целью повышения эффективности работы в данном направлении каждый четверг недели в министерствах и ведомствах был объявлен "Днём молодёжи”.
16 апреля текущего года в зале заседаний центрального аппарата Министерства транспорта состоялся круглый стол на тему "Предупреждение преступности среди молодёжи и борьба с ней" с участием заместителя министра И. Абдугафарова, старшего лейтенанта УКД ОВД Яккасарайского района города Ташкента Б. Халилова и начальника подразделения отдела уголовного розыска, старшего лейтенанта У. Нурматова.
Подробнее