Установить свойства виджета в 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
🔋 LEGO May the 4th be with you
#lego
✅ Oferta: 249,99€ + regalos
Como suele ser habitual con la llegada de cualquier 4 de mayo, desde LEGO nos recuerdan que la mejor forma de celebrar el día de Star Wars es aprovechando para hacernos con algunos de los mejores sets de su catálogo. Uno de lo más interesante es el Caza Estelar N-1 del Mandaloriano, que cuenta con 1.809 piezas y dos minifiguras.
Lo mejor de todo es que, si compramos un set ahora, recibiremos regalos como: decoración de The Mandalorian and Grogu, una réplica de la espada oscura y un minimodelo de la Razor Crest.
➡️https://is.gd/rcItxN
📣 Síguenos: @compradiccion
📱Síguenos en TikTok: https://www.tiktok.com/@compradiccion
🌎compradiccion.com
🧩LEGO “Juda g‘alati ishlar” (Stranger Things) serialidagi “Kril uyi” to‘plamini taqdim etdi
ℹ️ Yangi LEGO Icons Stranger Things: The Creel House to‘plami sizga Genri Krilning uyini ichidagi barcha mayda detallar va ishoralar bilan birga aniq tarzda qayta yaratish imkonini beradi.
⚙️ To‘plam 2593 ta detal va 13 ta minifiguradan iborat.
🎁 Agar siz LEGO’ning rasmiy sayti orqali buyurtma bersangiz, to‘plamga qo‘shimcha ravishda ikki dona avtomobil va Jim Hopper hamda Joyce Byers WSQK radiostansiyasida aks etgan kichik qo‘shimcha set ham kiradi.
📅 Yangi to‘plam 2026-yil 1-yanvardan sotuvga chiqariladi.
💸 Narxi — $299.
➡️#lego | Birinchi IT-Blog
🧩 LEGO “Karib dengizi qaroqchilari” filmidagi “Qora marvarid” kemasini taqdim etdi
ℹ️ To‘plam tafsilotlari:
- 2862 ta detal
- Ko‘plab yashirin elementlar
- 8 ta minifigura: Kapitan Jek Vorobey, Gektor Barbossa, Joshami Gibbs, Cotton, Uill Tyorner, Elizabet Svonn, Anna Mariya va Marti
📏 O‘lchamlari:
- Balandligi — 64 sm
- Uzunligi — 64 sm
- Kengligi — 23 sm
🗓 Sotuvga chiqish sanasi: 15-sentabr
💵 Narxi: $380
➡️#lego | Birinchi raqamli IT-Blog
🎲2025-yilda LEGO’ning «Gravity Falls», «Genshin Impact» va boshqa mavzulardagi to‘plamlari chiqishi mumkin
ℹ️ LEGO Ideas saytida joylashtirilgan 54 ta konstruktor g‘oyasi 10 mingdan ortiq ovoz to‘pladi. Ushbu ro‘yxatda juda ko‘p potentsial «xit» to‘plamlar mavjud: Godzilla va PlayStation 2’dan tortib, Genshin Impact hamda Gravity Falls’gacha. Endi kompaniya ushbu foydalanuvchilar taklif etgan konsepsiyalarni koʻrib chiqib, qaysi g‘oya ommaviy ishlab chiqarilishini aniqlashi kerak.
📅 Yakuniy qaror 5-maydan keyin e’lon qilinadi. Ehtimol, birdaniga bir nechta konsepsiya sotuvga chiqarilishi mumkin.
🕸 To‘liq ro‘yxat bilan quyidagi havola orqali tanishish mumkin:
LEGO Ideas Blog.
➡️#lego | Birinchi raqamli IT-Blog
Lego в июне выпустят грибочки — в сети показали новый набор из серии Botanicals с мухоморами.
В наборе Woodland Mushrooms 806 деталей и разнообразные виды грибов.
JDMax#lego
LEGO в одной рекламе умудрились собрать вместе Месси, Роналду, Мбаппе и Винисиуса.
По сюжету легенды футбола пытаются закрепить свои маленькие лего-фигурки на кубке чемпионов, собранном из фирменных деталек.
Повод для такого мощного сбора выход новых персональных наборов с участниками ЧМ-2026.
JDMax#lego
Китайский бренд CaDa выкатил конструктор Mercedes-AMG GT3 в масштабе 1:8 с официальной лицензией.
В наборе почти 5,5 тыс. деталей. После сборки получается модель 59×25×17 см.
Главная фишка: пневмодомкраты с ручным насосом для подъёма тачки, как на настоящем пит-стопе. Плюс светящиеся фары, открывающиеся двери и капот, регулируемое антикрыло и колёса с центральной гайкой.
Цена — $349 (29 000 рублей). По отзывам коллекционеров, CaDa уже начинает обгонять Technic.
JDMax#lego
Lego выпустят специальный набор по фильму «Формула-1» с Брэдом Питтом.
Внутри — болид APXGP, состоящий из 268 деталей и пилоты: Сонни Хейс и Джошуа Пирс.
Продажи обещают запустить 1 января. Цена – 27,99 долларов (2 267 рублей).
JDMax#lego
Новинка от LEGO - детализированный Железный человек.
Его руки, ноги и голову можно двигать, а ладони и сердце светятся. Предзаказ уже открыт, цена — около 12 000 рублей.
JDMax#lego
Lego выпустит большой набор по «Очень странным делам».
Внутри: дом Векны, пара машин и 13 фигурок героев. Всего 2593 детали для тех, кто готов собрать апокалипсис Хоукинса по кирпичику.
Цена ~ 300 $ . Старт продаж 1 января 2026 — сразу после выхода финальной серии.
JDMax#lego