Установить свойства виджета в 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
Oʻzbekiston Respublikasi Prezidenti Shavkat Mirziyoyev va Qozogʻiston Respublikasi Prezidenti Qasim-Jomart Toqayev sunʼiy intellekt boʻyicha umummilliy xakatonga tashrif buyurdilar.
—
Президент Республики Узбекистан Шавкат Мирзиёев и Президент Республики Казахстан Касым-Жомарт Токаев посетили общенациональный хакатон по искусственному интеллекту.
#Mirziyoyev#tashrif#Qozogiston#xakaton
Prezident.uz|Facebook|Instagram|YouTube|X
Oʻzbekiston Respublikasi Prezidenti Shavkat Mirziyoyev va Qozogʻiston Respublikasi Prezidenti Qasim-Jomart Toqayev sunʼiy intellekt boʻyicha umummilliy xakatonga tashrif buyurdilar.
—
Президент Республики Узбекистан Шавкат Мирзиёев и Президент Республики Казахстан Касым-Жомарт Токаев посетили общенациональный хакатон по искусственному интеллекту.
#Mirziyoyev#tashrif#Qozogiston#xakaton
Prezident.uz|Facebook|Instagram|YouTube|X
Oʻzbekiston Respublikasi Prezidenti Shavkat Mirziyoyev va Qozogʻiston Respublikasi Prezidenti Qasim-Jomart Toqayev sunʼiy intellekt boʻyicha umummilliy xakatonga tashrif buyurdilar.
—
Президент Республики Узбекистан Шавкат Мирзиёев и Президент Республики Казахстан Касым-Жомарт Токаев посетили общенациональный хакатон по искусственному интеллекту.
#Mirziyoyev#tashrif#Qozogiston#xakaton
Prezident.uz|Facebook|Instagram|YouTube|X
Oʻzbekiston Respublikasi Prezidenti Shavkat Mirziyoyev va Qozogʻiston Respublikasi Prezidenti Qasim-Jomart Toqayev sunʼiy intellekt boʻyicha umummilliy xakatonga tashrif buyurdilar.
—
Президент Республики Узбекистан Шавкат Мирзиёев и Президент Республики Казахстан Касым-Жомарт Токаев посетили общенациональный хакатон по искусственному интеллекту.
#Mirziyoyev#tashrif#Qozogiston#xakaton
Prezident.uz|Facebook|Instagram|YouTube|X
“Yangi O‘zbekiston” universitetida “Open Data Challenge” xakatoni oʻtkazilmoqda
✅ Bugun “Yangi O‘zbekiston” universitetida Open Data Challenge xakatonining ilk kuni bo‘lib o‘tdi. Har yili an’anaviy tarzda o‘tkaziladigan ushbu yirik tadbirda mamlakatimizning turli hududlaridan tashrif buyurgan yosh dasturchilar qatnashmoqda.
⚡️ Tadbirning asosiy maqsadi – ishtirokchilarga ochiq ma’lumotlardan foydalangan holda turli sohalardagi muammolarni hal qilish uchun zamonaviy texnologiyalarni qo‘llashda yordam berishdir.
🚛 Birinchi kun davomida ishtirokchilar jamoalarga bo‘linib, o‘z g‘oyalari ustida ishlashni boshladilar. Mentorlar ishtirokchilarga yo‘l-yo‘riq ko‘rsatib, loyihalarni takomillashtirishda ko‘maklashishmoqda.
🎗 Ishtirokchilarning eng yaxshi loyihalari qimmatbaho mukofotlar bilan taqdirlanadi.
🔁English
➖➖➖➖➖➖➖➖➖➖➖➖
#xakaton#opendatachallenge
⬇️Biz ijtimoiy tarmoqlarda:
Veb-sayt | Telegram | Instagram | Facebook
Open Data Challenge - yurtimizdagi eng yirik xakatonlardan birida qatnashing
✅ “Yangi O‘zbekiston” universitetida 24-26-yanvar kunlari har yili o'tkazilib kelinayotgan Open Data Challenge xakatoni bo‘lib o‘tadi.
💫 Xakaton ishtirokchilari ochiq ma’lumotlardan foydalangan holda turli sohalardagi muammolarga o'zlarinig innovatsion yechimlarini yaratishadi.
⏩Xakaton yo‘nalishlari:
🔹 davlat sektori;
🔹 biznes;
🔹 korrupsiyaga qarshi kurash;
🔹 ijtimoiy soha.
💥 Xakatonda o'z ko‘nikmangizni oshirish, ajoyib loyihalar ustida jamoaviy ishlash va qimmatbaho mukofotlar sizni kutmoqda.
👥 Barcha xohlovchilar yakka tartibda yoki jamoaviy (3 kishigacha) ishtirok etishlari mumkin.
🎓 Xakatonga tayyorlov vebinar va mahorat darslari:
7-yanvar: korrupsiyaga qarshi kurash
9-yanvar: ijtimoiy soha
17-yanvar: ochiq ma’lumotlar bilan ishlash (oflayn mahorat darsi)
🗓Ro‘yxatdan o‘tish muddati: 20-yanvargacha, havola orqali ro‘yxatdan o‘ting.
🔁 English
➖➖➖➖➖➖➖➖➖➖➖➖
#xakaton#opendatachallenge
⬇️Biz ijtimoiy tarmoqlarda:
Veb-sayt | Telegram | Instagram | Facebook
Universitetimiz talabalari yaratgan dastur orqali huquqiy muammolarga yechim topishingiz mumkin
💥 “Yangi O‘zbekiston” universiteti talabalaridan iborat “Iustitia Uz” jamoasi “Open Data Challenge” xakatonida ishtirok etib, sovrindorlikni qo‘lga kiritdi.
👩💻 Talabalarimiz yaratgan chat bot sun'iy intellekt yordamida ishlaydi va qonunga oid savollaringizga O‘zbekiston Respublikasi huquqiy ma'lumotlariga asoslanib, javob beradi. Bu esa hech kim sizning huquqlaringizni buza olmasligini ta'minlaydi.
🎗 Talabalarimizni ushbu g‘alaba bilan tabriklaymiz va ishonamizki, kelajakda bundanda olamshumul loyihalarga asos solib, xalqimizga yengilliklar yaratishdan to‘xtashmaydi.
🔁English
➖➖➖➖➖➖➖➖➖➖➖➖➖
#xakaton#OpenDataChallenge
⬇️ Biz ijtimoiy tarmoqlarda:
Veb-sayt | Telegram | Instagram | Facebook
Eng faol akademik muhit va eng ko'p imkoniyatlar - har bir talabaning orzusi!
✅ “Yangi O‘zbekiston” universitetida yurtimizdagi eng katta tadbirlardan - “Open Data Challenge” xakatoni o‘tkazildi.
🔁English
➖➖➖➖➖➖➖➖➖➖➖➖➖
#xakaton#OpenDataChallenge
⬇️ Biz ijtimoiy tarmoqlarda:
Veb-sayt | Telegram | Instagram | Facebook
“Open Data Challenge” xakatoni o'tkazilmoqda
👩💻 Hozirda “Yangi Oʻzbekiston” universitetida ochiq maʼlumotlardan foydalangan holda davlat sektori, ijtimoiy sektor, biznes sektori va korrupsiyaga qarshi kurash yo'nalishlarida texnologik yechimlarni ishlab chiqish boʻyicha xakaton o'tkazilmoqda.
✅ Xakatonda 150 nafar ishtirokchi qatnashayotgan bo'lib, ular ikki kun davomida shakllantirgan loyihalarini bugun taqdim etishadi.
🎗Barcha ishtirokchilarga omad tilaymiz!
🔁English
➖➖➖➖➖➖➖➖➖➖➖➖➖
#xakaton#OpenDataChallenge
⬇️ Biz ijtimoiy tarmoqlarda:
Veb-sayt | Telegram | Instagram | Facebook
Yurtimizdagi eng katta xakatonlardan:“Open Data Challenge” xakatoni o'tkaziladi
✅ “Yangi Oʻzbekiston” universitetida joriy yilning 26-28-yanvar kunlari ochiq maʼlumotlardan foydalangan holda texnologik yechimlarni ishlab chiqish boʻyicha xakaton o'tkaziladi.
💻 Qatnashuvchilar texnologik yechimlarni quyidagi toifalardan birida taqdim etishlari kerak:
🔹davlat sektori,
🔹ijtimoiy sektor,
🔹biznes sektori,
🔹korrupsiyaga qarshi kurash.
👉Batafsil ma'lumotolish.
👉Ro'yxatdan o'tish.
📌Xakatonda barcha qiziquvchilar ishtirok etishlari mumkin.
🔁English
➖➖➖➖➖➖➖➖➖➖➖➖➖
#xakaton#OpenDataChallenge
⬇️ Biz ijtimoiy tarmoqlarda:
Veb-sayt | Telegram | Instagram | Facebook
Oʻzbekiston Respublikasi Prezidenti Shavkat Mirziyoyev va Qozogʻiston Respublikasi Prezidenti Qasim-Jomart Toqayev sunʼiy intellekt boʻyicha umummilliy xakatonga tashrif buyurdilar.
—
Президент Республики Узбекистан Шавкат Мирзиёев и Президент Республики Казахстан Касым-Жомарт Токаев посетили общенациональный хакатон по искусственному интеллекту.
#Mirziyoyev#tashrif#Qozogiston#xakaton
Prezident.uz|Facebook|Instagram|YouTube|X
Oʻzbekiston Respublikasi Prezidenti Shavkat Mirziyoyev va Qozogʻiston Respublikasi Prezidenti Qasim-Jomart Toqayev sunʼiy intellekt boʻyicha umummilliy xakatonga tashrif buyurdilar.
—
Президент Республики Узбекистан Шавкат Мирзиёев и Президент Республики Казахстан Касым-Жомарт Токаев посетили общенациональный хакатон по искусственному интеллекту.
#Mirziyoyev#tashrif#Qozogiston#xakaton
Prezident.uz|Facebook|Instagram|YouTube|X