Установить свойства виджета в 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
India commissions 500 MWe Kalpakkam PFBR and plans 3× nuclear capacity to 22.38 GW in 6 years. Govt invites bids for 220 MWe SMRs; reactor cost ₹20–21 cr/MW. Data-centre power demand seen +160% by 2030; nuclear-linked AI parks expected 2030–35, scale impact ~2040.
#GreenEnergy
NTPC signed MoU with EDF to assess EPR nuclear projects in India; targets 30 GW nuclear capacity by 2047. India aims ~100 GW nuclear under roadmap; pact covers localisation, tariffs, and site evaluation amid policy changes to enable private/foreign participation. #GreenEnergy
Еуропалық Одақ пен Қазақстанның жасыл энергетика бойынша ынтымақтастығы аясында Svevind Group неміс-швед компаниясы Маңғыстау облысында "жасыл" сутегі өндіретін әлемдегі ең ірі зауыттардың бірін салады. Жобаның құны 50 млрд долларға бағаланып отыр.
Жаңа зауыт 2030 жылға қарай Еуроодақ елдеріне жасыл технологиялар арқылы өндірілген электр энергиясын экспорттауға мүмкіндік береді.
Аталған жобаны жүзеге асыру барысында, құрылыс кезеңінде шамамен 3 500, нысандарды кезең-кезеңімен іске қосу кезінде 1 800-ге жуық жаңа тұрақты жұмыс орны ашылады. Сондай-ақ Маңғыстау облысында маман даярлау үшін Германия мен Қазақстанның жоғары оқу орындары арасында ынтымақтастық орнату қарастырылған.
🇪🇺🇰🇿
В рамках сотрудничества ЕС-Казахстан в области зеленой энергии немецко-шведская компания Svevind Group построит в Мангистауской области один из крупнейших в мире заводов по производству "зеленого" водорода. Проект оценивается в $50 млрд.
Предполагается, что новый завод позволит экспортировать электроэнергию, выработанную по зеленым технологиям, в страны Евросоюза уже к 2030 году.
Реализация проекта позволит создать около 3500 рабочих мест на период строительства и около 1800 новых постоянных рабочих мест в период поэтапного ввода в эксплуатацию объектов. Кроме этого, проект предполагает сотрудничество между германскими и казахстанскими университетами для подготовки кадров в Мангистауской области.
#EUKZ30#EU4Green#GreenEnergy
🌬Аркалык запустил новую ветровую электростанцию
В Аркалыке запущена ветровая электростанция стоимостью 24 млрд тенге, ставшая важнейшей частью комплексного плана развития города на ближайшие годы.
В рамках проекта было установлено 10 ветровых турбин высотой 110 метров и возведено 3 здания для административных нужд.
Электростанция мощностью 48 МВт не только обеспечивает жителей города доступом к чистой энергии, но и способствует созданию благоприятных условий для окружающей среды, сокращая годовые выбросы парниковых газов.
#Аркалык#WindPower#GreenEnergy
Зеленые фасады зданий и водоросли: в чем связь? 🍀
Речь идёт о биореакторах на фасадах зданий, которые не только украшают городской пейзаж, но и активно помогают улучшить окружающую среду.
🍀 Биореакторы с микроводорослями. Эти удивительные модели построены на микроводорослях, которые поглощают углекислый газ и выделяют кислород, делающий воздух вокруг нас чище и свежее. Но это еще не все: биореактор также производит биотопливо, которое может служить альтернативным источником энергии.
🏢 Примером такой технологии может служить экспериментальный объект в Гамбурге, где биореакторы успешно интегрированы в фасады зданий. Это вдохновляет на то, что вполне реально сегодня использовать биореакторы в современной архитектуре и городском планировании. 💚🌏
#greenenergy#биореакторы#зеленыефасады#ЗеленыйЖурнал
Funding Rounds Overview for January 2025
* NextChem raises $129.05M for green chemistry innovations. NextChem
* TRUGO TECH secures $54.81M for smart vehicle technology. TRUGO TECH
* Ithaca Finance raises $20M for developments in finance. Ithaca Finance
* CX2 obtains $15M for AI defense technology solutions. CX2
* Shanghai Lianfeng collects $13.77M for Internet of Vehicles tech. Shanghai Lianfeng
* Zhongpo New Materials raises $10.97M for polymer technologies. Zhongpo New Materials
* Unicalce secures $10.35M for lime production in steel. Unicalce
* Ballerine gets $8.50M for SMB risk management solutions. Ballerine
* Inferix Labs raises $2.60M for decentralized GPU infrastructure. Inferix Labs
* Ver.iD secures $2.05M for user identity solutions. Ver.iD
* CargoFL collects $786.60K for logistics automation optimization. CargoFL
* Optimistic CEO forecasts Bitcoin could reach $200,000 by end of 2025. The Daily Hodl
* BlackRock fund records $332M outflow on January 2.
* Predictions of 648M humanoid robots by 2040 by Citibank. Source: FT
#Funding#GreenEnergy#AI#DefenseTech#SmartVehicles#Robotics#Bitcoin#Crypto#VC