Установить свойства виджета в 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
👣 BCG: ДВИГАТЬСЯ К ДЕКАРБОНИЗАЦИИ НУЖНО, ДАЖЕ ЕСЛИ НЕ ВИДИШЬ, КУДА ТОЧНО ИДТИ🛣💡
Жизнеутверждающая, хоть и совершенно далёкая от российской реальности статья от экспертов #BCG (подробнее - у меня ВКонтакте) призывает компании из трудно декарбонизируемых секторов (куда относят промышленность и тяжёлый транспорт, включая авиацию, судоходство и автомобильные перевозки) не поддаваться текущей неопределённости (как в плане политики и экономики, так и в отношении готовности технологий достижения «чистого нуля») и двигаться вперёд, даже если к этому не подталкивают законодательные меры. Чтобы начать это движение, компаниям необходим план по декарбонизации: он должен быть чётким, вызывающим доверие и общедоступным. Тогда, по мнению экспертов, бизнес сможет рассчитывать на привлечение капитала и доверие инвесторов, а также стать более привлекательным на рынке труда. Кроме того, это будет конкурентным преимуществом при выборе поставщиков и контрагентов, так как вендоры стремятся к сокращению выбросов по всей цепочке поставок, и повысит ценность бренда в глазах конечных потребителей, требующих более активных действий по борьбе с изменением климата.
В конечном итоге, переход к чистому нулю потребует от компаний из трудно декарбонизируемых секторов фундаментальных преобразований, считают в BCG. Инициативы, необходимые для обезуглероживания этих секторов, не могут осуществляться в качестве побочной деятельности, поскольку они должны быть тесно интегрированы с основными операциями, исходить от бизнеса и осуществляться им самим. Успешные преобразования в области устойчивого развития включают:
✅ разработку стратегии устойчивого развития, нацеленной на чистый ноль;
✅ получение большей бизнес-ценности от инвестиций;
✅ создание новых устойчивых предприятий;
✅ обеспечение устойчивости стратегического ядра бизнеса; ✅ наращивание потенциала и
✅ умение создавать нарратив – успешную бизнес-историю, привлекающую инвесторов и общественность.
Самый успешный консалтинг - в Узбекистане
Наш опрос был сформулирован не совсем верно:) Но очень многие читатели все равно указали правильный ответ – Узбекистан (определено на основе небольшого верхне-уровневого исследования).
Boston Consulting Group удалось в этой стране войти в Топ-20 по уплаченным налогам за 9М2025, но, справедливости ради – это Топ по сфере услуг, если считать по всем секторам результат будет более скромным. BCG заплатила в бюджет Узбекистана 97 млрд сум ($7,6 млн), оказавшись на 19-м месте среди предприятий сферы услуг и в Топ-150 по республике.
Этот результат кажется скромным в сравнении с Узбекнефтегазом или UzAuto, но не так уж далек от показателей крупных промышленных и строительных холдингов. Налоговые выплаты Uzbekistan GTL в январе-сентябре 2025 г. были лишь в 2,5 раза выше, «Узбекугля» – в 2 раза, а, например, YandexGo заплатил на 10% меньше.
Порадуемся за коллег и попросим совета: как достичь таких результатов?:)
#Узбекистан#Налоги#BCG
🎙Phase 2 of our Alpha Demo is now LIVE
A new section of the map has been unveiled along with a new BOSS: The Rose Golem🌹
To celebrate, we're airdropping 5 winners who slay The Rose Golem!🪨
TO ENTER👇
👉Tweet a video of you slaying The Rose Golem
👉Tag us and 3 friends in your post
👉Join the Discord http://discord.gg/thefabled
#BCG#thefabled #soulslike#Promotion
Sur Global опережает развитые экономики: Латинская Америка на подъёме
Согласно отчёту Boston Consulting Group, страны Sur Global, включая Бразилию, Мексику и Перу, будут расти в среднем на 4,2% в год до 2029 года, что вдвое превышает темпы развитых экономик (1,9%). Это укрепляет роль Латинской Америки в мировой торговле и климатическом лидерстве.
Новый порядок в мировой торговле
👉Торговля между странами Sur Global (Юг-Юг) будет расти на 3,8% в год до 2033 года, обгоняя торговлю между развитыми странами (2,2%).
👉Объём торговли Sur Global достигнет $14 трлн к 2033 году.
Климатическое лидерство
▪️Бразилия: более 80% энергии из возобновляемых источников.
▪️Чили: амбициозная стратегия по развитию зелёного водорода.
▪️Колумбия и Перу: значительные инвестиции в чистую энергетику.
Рост внутреннего потребления
Ожидается, что потребительские расходы в странах, таких как Перу, Мексика и Колумбия, увеличатся более чем на 30% к 2029 году, стимулируя экономический рост и инвестиции.
#SurGlobal#ЛатинскаяАмерика#Экономика2025#Рост#КлиматическоеЛидерство#Торговля#Инвестиции#BCG
👉Всегда свежие новости о странах Латинской Америки!