Установить свойства виджета в 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
#Ethiopia's #Afar Rift provides glimpse into life and death 100,000 years ago
The study of ancient cultures around Ethiopia during the Middle Stone Age (MSA) time period is important for understanding how some of the first Homo sapiens lived and eventually left Africa. Unfortunately, there are not many well-preserved, open-air archaeological sites from the MSA, especially with both human fossils and artifacts. The Middle Awash study area in Ethiopia, however, is one of the few areas with a well-preserved treasure trove of artifacts capable of painting a picture of early human life in Ethiopia. A new study, published in the Proceedings of the National Academy of Sciences, reports on some fascinating findings from this region, giving clues into what life—and death—might have been like.
Life in the Afar Rift
Around 1,800 piece-plotted stone artifacts larger than a centimeter were found, along with 132 animal remains.
https://phys.org/news/2026-04-ethiopia-afar-rift-glimpse-life.html
From the Afar Desert to Article 39: Ethiopia’s Dual Rift. Read more. https://borkena.com/2025/12/21/from-the-afar-desert-to-article-39-ethiopias-dual-rift/#Ethiopia#Afar#politics
TPLF Alleges Federal Gov’t “Carried Out Drone Strike on Tigray Forces” Read more. https://borkena.com/2025/11/07/tplf-alleges-federal-govt-carried-out-drone-strike-on-tigray-forces/#Ethiopia#TPLF#Afar
Afar Diaspora Conference : “Djiboutian regime” playing “detrimental role” Read more.
https://borkena.com/2026/01/04/afar-diaspora-conference-djiboutian-regime-playing-detrimental-role/#Afar#Djibouti#Eritrea#Ethiopia
General Tadesse Led Tigray Interim Administration Takes TPLF Side Over Afar Security Dev’t. Read more. https://borkena.com/2025/11/09/general-tadesse-led-tigray-interim-administration-takes-tplf-side-over-afar-security-devt/#Ethiopia#news#TPLF#Tigray#Afar
Afar Regional State Confirms TPLF Forces Started War, Controlled Six Villages. Read more. https://borkena.com/2025/11/06/ethiopia-afar-regional-state-confirms-tplf-forces-started-war-controlled-six-villages/#Ethiopia#War#Afar#TPLF
AFAR: перспективы и опасности космического туризма
Зачем люди летают в космос? Космонавты и учёные - понятно, они двигают наш прогресс и понимание Вселенной вперёд. Но какая мотивация посетить орбиту у "простого" человека, который отдаёт миллионы долларов за несколько часов наблюдения нашей планеты с огромной высоты? На самом деле многие считают, что в этот момент на путешественника снисходит некое озарение, позволяющее по-новому взглянуть на свою жизнь и существование на Земле в целом. Так ли это? И стоит ли подобный опыт всех усилий? А может быть подобное просветление самообман, и заскучавшим от избытка удовольствий богачам просто хочется чего-то совсем необычного?
"Известно, что актер Уильям Шатнер сказал Джеффу Безосу после полета на корабле Blue Origin, что увидеть космос — все равно что увидеть смерть. «Там внизу синева, а наверху чернота… Это смерть? Это и есть смерть?» — вопрошал Шатнер. Рассматривая тонкость атмосферы, защищающей жизнь на Земле, на фоне необъятности Вселенной, Шатнер был поражен тем, насколько хрупкая оболочка обозначает разницу между человеческим существованием и его отсутствием".
https://theidealist.ru/spacetour/
#AFAR#технологии#космос#туризм#экология
News: Outreach vaccination, screening campaign reaches conflict-hit, remote communities in #Ethiopia
Health teams deployed under the SLL program have identified and vaccinated more than 3,000 zero-dose children in remote areas, with recent campaigns reaching over 40,000 children across #Afar, #Amhara, #Oromia, and #Tigray regions.
The intervention is also addressing Ethiopia’s large population of “zero-dose” children, estimated at 3.9 million, who have not received routine vaccinations due to conflict, geographic isolation, and limited healthcare access.
https://addisstandard.com/?p=56643
A Volcanic Eruption Reported In The Afar Region of Ethiopia. Read more.
https://borkena.com/2025/11/23/ethiopia-a-volcanic-eruption-reported-afar-region/#Ethiopia#News#Afar#Volcaniceruption