Установить свойства виджета в 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
Аромат дня - Guess 1981 Los Angeles (женский) 💖
Свежими, бодрящими цитрусовыми аккордами мандарина и вкусными фруктовыми нотками душистой груши и ярких ягод красной смородины открывается аромат, сплетаясь в «сердце» композиции с роскошными цветочными оттенками медового пиона, изысканного белого жасмина и чарующим апельсиновым цветом ✨
Восточные ноты нежной пудровой ванили, сладкого пралине, чувственного мускуса и элегантные древесные оттенки сливочно-хвойного кедра завершают великолепный женский парфюм Guess 1981 Los Angeles Woman.
СТОИМОСТЬ💵
Guess 1981 Los Angeles, 100 мл – 2 850 руб
#ЖенскиеАроматы
#Guess
⚫️ Больше ароматов Guess и других брендов по запросу
⚫️ Для заказа и по всем вопросам - @originalproduct_new
🎙 INVEST REPORT ANNOUNCE GUESSIT
⚖️ INVEST REPORT project rating 8/10 ⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️
GUESSIT is an exciting, community-driven game where players buy credits to guess a numeric code. The goal? Crack the safe and win the ever-growing prize pool! Every attempt grows the pot and raises the stakes. But there’s more: an interactive AI Agent guards the safe, securely generates the code, and helps players strategize without revealing the solution. This isn't just a game—it’s a social phenomenon where players come together to share tips, analyze guesses, and compete for glory.
One of the better launches I've seen under these market conditions. Over $2m in volume already.
Project sit now at 8M MC floor and team is waiting when to launch marketing.
Whats more to come?
- Game about to be dropped
- Marketing is about to kick in
- Game viral marketing through TIKTOK
- 2.5X Leverage trading
👉CA: 9PHyv24rtL8RKSnsniZ3G5WwKrChCiDAuMvW3earGr9g
☑️ Follow GUESSIT:
Website: https://guessitsol.ai/
X: https://x.com/guessitonsol
Telegram: https://guessitsol.ai/
TIKTOK: https://www.tiktok.com/@guessitsol
#GUESS#AI#Game
I guessed this word in 3/6 tries.
✏️GRUFF
📅 29.03.2026
🟩🟩⬜️🟧⬜️
⬜️🟩🟧⬜️⬜️
🟩🟩🟩🟩🟩
⬜️⬜️⬜️⬜️⬜️
⬜️⬜️⬜️⬜️⬜️
⬜️⬜️⬜️⬜️⬜️
Reward: 160 🌟
Can you guess this word❓
PLAY NOW 🔜@DailyPuzzles
#wordle#DailyPuzzles#daily#guess
I guessed this word in 4/6 tries.
✏️ABUSE
📅 27.03.2026
⬜️⬜️⬜️🟧⬜️
⬜️⬜️🟧⬜️⬜️
⬜️🟩🟩⬜️⬜️
🟩🟩🟩🟩🟩
⬜️⬜️⬜️⬜️⬜️
⬜️⬜️⬜️⬜️⬜️
Reward: 120 🌟
Can you guess this word❓
PLAY NOW 🔜@DailyPuzzles
#wordle#DailyPuzzles#daily#guess
I guessed this word in 5/6 tries.
✏️DALLY
📅 24.03.2026
⬜️⬜️⬜️⬜️⬜️
⬜️⬜️⬜️⬜️⬜️
⬜️🟧🟧⬜️⬜️
🟧🟩⬜️⬜️⬜️
🟩🟩🟩🟩🟩
⬜️⬜️⬜️⬜️⬜️
Reward: 100 🌟
Can you guess this word❓
PLAY NOW 🔜@DailyPuzzles
#wordle#DailyPuzzles#daily#guess
I guessed this word in 6/6 tries
✏️SLINK
📅 20.03.2026
⬜️⬜️⬜️⬜️🟧
⬜️⬜️⬜️⬜️⬜️
🟧⬜️⬜️⬜️🟧
🟩🟩🟧🟧⬜️
🟩🟩🟩🟩⬜️
🟩🟩🟩🟩🟩
Reward: 100 🌟
Can you guess this word❓
https://t.me/DailyPuzzlesBot?startapp
#wordle#DailyPuzzles#daily#guess
I guessed this word in 3/6 tries
✏️ENEMY
📅 17.03.2026
🟩⬜️🟩⬜️⬜️
⬜️🟧⬜️⬜️🟧
🟩🟩🟩🟩🟩
⬜️⬜️⬜️⬜️⬜️
⬜️⬜️⬜️⬜️⬜️
⬜️⬜️⬜️⬜️⬜️
Reward: 160 🌟
Can you guess this word❓
https://t.me/DailyPuzzlesBot?startapp
#wordle#DailyPuzzles#daily#guess
I guessed this word in 5/6 tries
✏️CACHE
📅 16.03.2026
⬜️⬜️⬜️🟩⬜️
⬜️⬜️⬜️🟩⬜️
🟩⬜️⬜️🟩⬜️
🟩⬜️⬜️⬜️🟧
🟩🟩🟩🟩🟩
⬜️⬜️⬜️⬜️⬜️
Reward: 120 🌟
Can you guess this word❓
https://t.me/DailyPuzzlesBot?startapp
#wordle#DailyPuzzles#daily#guess
I guessed this word in 5/6 tries
✏️LABEL
📅 14.03.2026
⬜️⬜️⬜️🟩⬜️
⬜️⬜️⬜️🟩⬜️
🟩⬜️⬜️🟩⬜️
🟩⬜️⬜️⬜️🟧
🟩🟩🟩🟩🟩
⬜️⬜️⬜️⬜️⬜️
Reward: 120 🌟
Can you guess this word❓
https://t.me/DailyPuzzlesBot?startapp
#wordle#DailyPuzzles#daily#guess
I guessed this word in 5/6 tries
✏️SILLY
📅 13.03.2026
⬜️⬜️🟩🟩🟩
⬜️⬜️🟩🟩🟩
⬜️🟩🟩🟩🟩
⬜️🟩🟩🟩🟩
🟩🟩🟩🟩🟩
⬜️⬜️⬜️⬜️⬜️
Reward: 120 🌟
Can you guess this word❓
https://t.me/DailyPuzzlesBot?startapp
#wordle#DailyPuzzles#daily#guess
I guessed this word in 6/6 tries
✏️CAMEL
📅 12.03.2026
⬜️⬜️⬜️🟩⬜️
⬜️⬜️⬜️🟩⬜️
⬜️⬜️⬜️🟩⬜️
⬜️⬜️⬜️🟩⬜️
🟩⬜️⬜️🟩⬜️
🟩🟩🟩🟩🟩
Reward: 100 🌟
Can you guess this word❓
https://t.me/DailyPuzzlesBot?startapp
#wordle#DailyPuzzles#daily#guess