Установить свойства виджета в 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
☠️ Хэй, Бэнгеры!
20 января состоится юбилейный выпуск программы Solid Bangerz #50🎉
В эфире — звёздные гости, любимый Drum&Bass и неповторимая энергичная атмосфера. Готовы к музыкальной феерии? Тогда не пропустите эфир!
На эфире выступят:
• Константин GVOZD — амбассадор Drum&Bass в России, радиоведущий, музыкальный продюсер, сооснователь «Пиратской станции» и владелец лейбла Respect Records🔥
• Андрей CHAOZ — Techno / DNB продюсер, магистр сведения и отец Redr00m🈴
• Дима LUGER — Панк по натуре и философии, безудержный поклонник и создатель драм-н-бэйс культуры по жизни! Главный голос эфиров и участник команды Solid Bangerz☠️
Line Up:
20:00 - GVOZD
21:00 - SOLID BANGERZ
22:00 - CHAOZ
Hosted by LUGER
‼️Трансляция Twitch
‼️Трансляция VK
☠️Инфозона Solid Bangerz
🪙Поддержать команду монетой
Увидимся на волнах Reactor Radio!
С любовью к ритму и вам, Solid Bangerz!
#solid_bangerz#luger#gvozd#chaoz
#reactor_radio#online_radio
#dnb_spb#dnb#drum_and_bass
☠️ 16 сентября 2025, эфир Solid Bangerz #33 на Reactor Radio!
INFERNAL | LAPA | VEIN | MUFFINWITHNOTHING | LUGER | CHAOZ | EXIT4
Вайбово и с огоньком отметили день рождения Кирюхи VEIN'a ☠️ Поздравили мощными сетами, добрыми пожеланиями и конечно же праздничным тортом в конце эфира 🎂
‼️Аудио и видео записи эфира
☠️ Инфозона Solid Bangerz
🪙Поддержать команду монетой🤝
С любовью к ритму и вам, Solid Bangerz!
#solid_bangerz#infernal#exit4#muffinwithnothing#vein#luger#chaoz
#reactor_radio#online_radio
#dnb_spb#dnb#drum_and_bass
😈 Привет, Бэнгеры!
Выходные прошли, а мы готовы в самом начале недели пролететь ураганом по вашим саундсистемам с сумасшедшим вайбом!
Эфир Solid Bangerz Tales #19 посетит специальный гость - Костя GVOZD💥 Так же отыграет DNB сет наш друг, Андрей ChaOZ (XayZz)⚡️ Ну а начнут разогревать аппаратуру Дима Infernal и Вова SVDj🔥 Увидимся на волнах Reactor Radio во этот вторник! 🤟
Line Up:
20:00 - Infernal
20:30 - SVDj
21:00 - GVOZD
22:00 - ChaOZ
*Hosted by LUGER
‼️Трансляция Twitch
‼️ Трансляция VK - ссылка появится после начала трансляции
С любовью к ритму и вам, Solid Bangerz!
#Solid_Bangerz#GVOZD#ChaOZ#Infernal#SVDj#LUGER#Reactor_Radio#Online_Broadcasting#DNB#SPb_DNB#Drum_and_Bass
😈 Хэй, Бэнгеры!
Ловите видео и аудио сеты с юбилейного эфира Solid Bangerz Tales #25🔥 Прошедшего 15 июля 2025 года на волнах Reactor Radio!
Line Up:
HaosVibe - video / audio
ChaOZ - video / audio
INFERNAL - video / audio
C O N D O R - video / audio
Wayron - video / audio
*Hosted by LUGER
С любовью к ритму и вам, Solid Bangerz!
#solid_bangerz#infernal#luger#chaoz#condor#haosvibe#wayron
#reactor_radio#online_radio
#dnb_spb#dnb#drum_and_Bass
😈 Wazzup! BANGERZ!
15 июля, эфир Solid Bangerz Tales #25 обещает быть не только жарким🔥 но и довольно интересным! В лайнапе новые локальные диджеи и гость с Урала 🤘🏻 А так же увеличенное время эфира на целый час 💣 Ждём всех с нетерпением, пропускать такое категорически нельзя!
На эфире выступят:
Ваня HaosVibe - Юное дарование, пробует себя в разных амплуа и стилях. Ученик ChaOZ и Plasti-X🔥
Андрей ChaOZ - Techno / DNB продюсер, магистр сведения и отец Redr00m Community💥
Дима INFERNAL - Генератор адской энергии и участник команды Solid Bangerz⚡️
Дима C O N D O R - Диджей с многолетним опытом и основатель передачи Broken Beat Station⚡️
Миша Wayron - Мультижанровый диджей и продюсер из города Пермь. Основатель тусовки URALBASS🔊
Дима LUGER - Главный голос эфиров и участник команды Solid Bangerz❤️
Line Up:
20:00 - HaosVibe
20:45 - ChaOZ
21:30 - INFERNAL
22:15 - C O N D O R
23:00 - Wayron
*Hosted by LUGER
‼️Трансляция Twitch
‼️ Трансляция VK - ссылка появится после начала трансляции
Увидимся вечером на волнах Reactor Radio!
С любовью к ритму и вам, Solid Bangerz!
#solid_bangerz#infernal#luger#chaoz#condor#haosvibe#wayron
#reactor_radio#online_radio
#dnb_spb#dnb#drum_and_Bass
☠️ Хэй, Бэнгеры!
Ловите аудио и видео записи с праздничного эфираSolid Bangerz #39🔥
Прошедшего 28 октября 2025 года на волнах Reactor Radio!
⠀
Line Up:
INTERCEPTOR - audio| video
INFERNAL & EXIT4 - audio| video
CHAOZ -audio| video
VEIN -audio| video
PLASTI-X -audio| video
📹VK Video
🔊VK Audio
📸TG Photo
⠀
☠️Инфозона Solid Bangerz
🪙Поддержать команду монетой
⠀
С любовью к ритму и вам, Solid Bangerz!
#solid_bangerz#infernal#exit4#luger#interceptor#plastix#chaoz#vein
#reactor_radio#online_radio
#dnb_spb#dnb#drum_and_bass
👁👽😈🌝🐼
Еще не очень отдохнувшие лица двигают в сторону
деревни «Ложкарёво» на мыс Кюрённиеми.
#Solar_Systo_2025#Lozhkarevo_Rave#Redr00m#Solid_Bangerz#Infernal#Exit4#ChaOZ#Lapa#Family_Trip#DnBAllTime
☠️ Хэй, Бэнгеры!
28 октября, на эфире Solid Bangerz #39 мы отпразднуем день рождения команды, 24 октября нам исполнился 1 год🎉 Отметим эту небольшую но очень важную дату вместе под любимый саунд 🔊
На эфире выступят:
• Макс INTERCEPTOR — Диджей и селектор из города Шлиссельбург. Любитель знатно пошуметь в таких стилях как: Drum & Bass, Breaks. Участник команды Solid Bangerz☠️
• Дима INFERNAL — Адепт разрывного и динамичного Drum & Bass, настоящий генератор адской энергии. В его сетах - быстрые, ритмичные треки, тяжёлые басы и проверенные танцпол-уничтожители. Минимум пауз, максимум дропов - гарантированно! Участник команды Solid Bangerz☠️
• Макс EXIT4 — DNB продюсер с более чем 20-летним опытом. Основатель лейбла E-Form Rec и проекта Friend Zone. Автор релизов на Close 2 Death, Abducted LTD и др., а так же участник крупнейших радиошоу и подкастов страны. Участник команды Solid Bangerz☠️
• Андрей CHAOZ — Techno / DNB продюсер, магистр сведения и отец Redr00m Community🈴
• Кирилл VEIN — Industrial Hardcore / Crossbreed / DNB продюсер, эксперт в области жирных индустриальных бочек, дарковых риз-басов, металлических снейров и тёмной атмосферы ☠️
• Илья PLASTI-X — Босс "Reactor Radio" и преподаватель в "Нейропанк Академии". В Drum & Bass индустрии уже более 15 лет. Отдает предпочтение спидмиксингу, играя с 3-x дек в таких стилях, как Neurofunk и Techstep🔥
• Дима LUGER — Панк по натуре и философии, безудержный поклонник и создатель драм-н-бэйс культуры по жизни! Главный голос эфиров и участник команды Solid Bangerz☠️
Line Up:
20:00 - INTERCEPTOR
20:45 - INFERNAL & EXIT4
22:15 - CHAOZ
23:00 - VEIN
23:45 - PLASTI-X
Hosted by LUGER
‼️Трансляция Twitch
‼️ Трансляция VK - ссылка появится после запуска трансляции
☠️ Инфозона Solid Bangerz
🪙Поддержать команду монетой🤝
Увидимся на волнах Reactor Radio!
С любовью к ритму и вам, Solid Bangerz!
#solid_bangerz#infernal#exit4#luger#interceptor#plastix#chaoz#vein
#reactor_radio#online_radio
#dnb_spb#dnb#drum_and_bass
#birthday#1year