Установить свойства виджета в 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
🎮🔥 Dream Works Game Fest 2026 da ishtirok etadi! 🔥🎮
2026 yilning eng kutilgan gaming voqealaridan biri yaqinlashmoqda!
Dream Works Game Fest 2026 doirasida yangi o‘yinlar taqdimoti, eksklyuziv namoyishlar, jonli chiqishlar va ko‘plab kutilmagan e’lonlar bo‘lib o‘tadi.
Bu festival — innovatsiya, kreativ g‘oyalar va gaming olamidagi eng so‘nggi tendensiyalar markazi! 🎯
Soha mutaxassislari, ijodkorlar va o‘yin ixlosmandlari bir maydonda jam bo‘ladi.
Eng qiziq yangiliklarni o‘tkazib yubormang!
Batafsil ma’lumotlar tez orada e’lon qilinadi. 🔥
#DreamWorksGameFest2026#GameFest#Gaming #2026
🎮🔥 Warner Bros. to Participate in Warner Bros. Game Fest 2026! 🔥🎮
One of the world’s leading media and gaming companies, Warner Bros., is expected to showcase its upcoming projects and highly anticipated releases as part of Warner Bros. Game Fest 2026.
During the event, the company may feature:
• Announcements of new video games
• Updates on popular franchises
• Trailer and gameplay presentations
• Partnerships and exclusive projects
With its powerful IP portfolio — including superheroes, major film franchises, and well-known gaming brands — Warner Bros. consistently generates significant excitement on the Game Fest stage.
Game Fest 2026 stands as one of the most important events in the gaming industry, bringing together a global audience and serving as a launch platform for major new projects.
More details and official announcements are expected in the coming days.
🎮🔥Dream Works Game Fest 2026 da ishtirok etadi!🔥🎮
2026 yilning eng kutilgan gaming voqealaridan biri yaqinlashmoqda! 🚀
Dream Works Game Fest 2026 doirasida yangi o‘yinlar taqdimoti, eksklyuziv namoyishlar, jonli chiqishlar va ko‘plab kutilmagan e’lonlar bo‘lib o‘tadi.
Bu festival — innovatsiya, kreativ g‘oyalar va gaming olamidagi eng so‘nggi tendensiyalar markazi! 🎯
Soha mutaxassislari, ijodkorlar va o‘yin ixlosmandlari bir maydonda jam bo‘ladi.
Eng qiziq yangiliklarni o‘tkazib yubormang!
Batafsil ma’lumotlar tez orada e’lon qilinadi. 🔥
#DreamWorksGameFest2026#GameFest#Gaming #2026
🎮🔥
Warner Bros.
to Participate in
Warner Bros. Game Fest 2026
!
🔥
🎮
One of the world’s leading media and gaming companies,
Warner Bros.
, is expected to showcase its upcoming projects and highly anticipated releases as part of
Warner Bros. Game Fest 2026
.
During the event, the company may feature:
• Announcements of new video games
• Updates on popular franchises
• Trailer and gameplay presentations
• Partnerships and exclusive projects
With its powerful IP portfolio — including superheroes, major film franchises, and well-known gaming brands —
Warner Bros.
consistently generates significant excitement on the Game Fest stage.
Game Fest 2026
stands as one of the most important events in the gaming industry, bringing together a global audience and serving as a launch platform for major new projects.
More details and official announcements are expected in the coming days.
📱 Telegram | 📱 Instagram
📱 Facebook | 📱 LinkedIn
🎮🔥GAME FEST YANA QAYTMOQDA! 🔥🎮
Geymerlar, tayyormisiz?
Eng katta o‘yin e’lonlari, kutilmagan treylerlar va shov-shuvli yangiliklar yana bir joyda jam bo‘ladi!
Bu - yangi o‘yinlar, kuchli studiyalar va haqiqiy hype vaqti.
Dunyo bo‘ylab millionlab geymerlar kutayotgan lahzalar yaqin! 🚀
👉 Agar sen ham o‘yinlar olamidan ortda qolishni xohlamasang - biz bilan qol!
#GameFest#Gaming#Geymerlar#NewGames#Hype🎮🔥
🎮 Game Fest yana qaytmoqda! 🎮
O'yin dunyosining eng katta tadbiri qaytmoqda! 🎉 Game Fest 2026 o'zining yangi innovatsion o'yinlari, texnologiyalari va g'oyalarini taqdim etadi. O'yinsevarlar, ishlab chiqaruvchilar va texnologiya ixlosmandlari uchun juda katta imkoniyat!
✨ Yangi o'yinlar, mashhur dasturchilar bilan uchrashuvlar, interaktiv panel va ko'plab hayajonli yangiliklarni kashf etishga tayyor bo'ling!
🎮 Eslatma: Agar o'yinlarni yaxshi ko'rsangiz, bu tadbirni o'tkazib yubormang!
#GameFest#Oyunlar#TechFestival#GameLovers#Innovation
🎮Ты умеешь создавать игры, но не знаешь, как довести их до релиза?
Теперь это не проблема!
Прими участие в Game Jam в рамках GameFest 2025 - и получи шанс:
— получить фидбэк от мировых экспертов игровой индустрии
— вывести свою игру на глобальный рынок
📆 13–15 мая
📍 Школа №21, Ташкент
Не упусти такую возможность, это твой шанс заявить о себе!
✈️Регистрируйся прямосейчас: Game Jam
#gamejam#gamefest#gamedev#игры#геймджем#геймдев#конкурс
🎮Создай игру за 48 часов!
📆С 13 по 15 мая в рамках Game Fest пройдёт GameJam — марафон по созданию игр под руководством международных экспертов!
— крутые призы
— ценный фидбек
— участие открыто для всех!
🎮Даже если ты только начинаешь — это твой шанс заявить о себе!
Собери команду или участвуй соло — покажи, на что ты способен!
✈️Регистрируйся прямосейчас: Game Jam
#gamejam#gamefest#gamedev#игры#геймджем#геймдев#конкурс