Установить свойства виджета в 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
News: #Election Board extends voter, candidate registration timelines for 2026 general election
Addi Abeba- The National Election Board of Ethiopia (NEBE) has announced an extension of deadlines for voter and candidate registration, citing the need to complete outstanding preparatory work ahead of Ethiopia’s 7th General Election scheduled for 2026.
The Board disclosed the decision during a press briefing yesterday on pre-election preparations.
Melatwork Hailu, NEBE Chairperson, said the extension follows requests and challenges reported by political parties and independent candidates who were unable to complete registration within the previously set timeframe, as well as the Board’s need to finalize remaining preparatory activities.
Accordingly, voter registration, initially scheduled to begin on 14 February 2026, has been postponed and will now start on 07 March 2026.
https://www.facebook.com/share/p/1DxJBGQn15/
Why Ethiopia’s Coming June Election Is a Facade And How It Deepens Peace and Security Crisis from Tigray to Oromia to Amhara. Read more.
https://borkena.com/2026/05/02/how-ethiopias-coming-election-deepens-peace-and-security-crisis/#Ethiopia#politics#Election
47 Ethiopian Political Parties Registered for the Upcoming Election. Read more.
https://borkena.com/2026/03/08/47-ethiopian-political-parties-registered-for-the-upcoming-election/#Ethiopia#News#election
National Electoral Board Announces 7th General Election Schedule. Read more.
https://borkena.com/2025/12/10/ethiopia-national-electoral-board-announces-7th-general-election-schedule/#Ethiopia#News#Election
National Electoral Board Announces 7th General Election Schedule. Read more.
https://borkena.com/2025/12/10/ethiopia-national-electoral-board-announces-7th-general-election-schedule/#Ethiopia#News#Election
#newtgingrich : RT @JobCreatorsUSA: We recently launched a huge radio ad buy on Spanish-language radio in crucial election states to highlight the stark contrast between #Hispanics' choices this #election.
For an increasing number of them, the choice is clear.
-Alfredo Ortiz @FoxNews
https://t.co/l5JeyudS9S
“Renaissance” jamoasi “Yangi O‘zbekiston” universiteti talabalar kengashi uchun o‘tkazilgan saylovlarda g'oliblikni qo‘lga kiritdi
🗳 “Yangi O‘zbekiston” universiteti talabalar kengashi prezidentligi uchun o‘tkazilgan saylovlarda Nurislombek Maxkamjonhojizoda hamda uning “Renaissance” jamoasi g‘oliblikni qo‘lga kiritishdi.
📊 O‘tkazilgan saylov natijalariga ko‘ra “Sentinels” jamoasi 40.7% “Renaissance” jamoasi esa 59.3% natijani qayd etishdi.
🎗“Renaissance” jamoasini g‘oliblik bilan tabriklab, kelajakdagi faoliyatida omad tilab qolamiz.
🔁English
➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
#election#renaissance
⬇️Biz ijtimoiy tarmoqlarda:
Veb-sayt | Telegram | Instagram | Facebook
“Renaissance” jamoasi “Yangi O‘zbekiston” universiteti talabalar kengashi uchun o‘tkazilgan saylovlarda g'oliblikni qo‘lga kiritdi
🗳 “Yangi O‘zbekiston” universiteti talabalar kengashi prezidentligi uchun o‘tkazilgan saylovlarda Nurislombek Maxkamjonhojizoda hamda uning “Renaissance” jamoasi g‘oliblikni qo‘lga kiritishdi.
📊 O‘tkazilgan saylov natijalariga ko‘ra “Sentinels” jamoasi 40.7% “Renaissance” jamoasi esa 59.3% natijani qayd etishdi.
🎗“Renaissance” jamoasini g‘oliblik bilan tabriklab, kelajakdagi faoliyatida omad tilab qolamiz.
🔁English
➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
#election#renaissance
⬇️Biz ijtimoiy tarmoqlarda:
Veb-sayt | Telegram | Instagram | Facebook
Timurid partiyasi saylovda g'alaba qozondi
⚡️ “Yangi O‘zbekiston” universiteti Talabalar kengashi prezidentligiga o'tkazilgan saylovlar yakunlandi. Saylov natijalariga ko'ra Saidmurod Abrorov boshchiligidagi Timurid partiyasi eng ko'p (412 ta) ovoz to'plab, g'olib bo'ldi.
✅ Shuningdek, saylovda faol qatnashgan Meros jamoasi 206 ta, SSST jamoasi esa 68 ta ovozni qo'lga kiritdi.
🎗Ushbu ishonch va g'alaba bilan Saidmurod Abrorov hamda uning jamoasini tabriklaymiz. Kelajakda talabalar hayoti yanada qizg'in bo'lishiga ishonamiz.
🔁English
➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
#election#timurid
⬇️Biz ijtimoiy tarmoqlarda:
Veb-sayt | Telegram | Instagram | Facebook
“Meros” jamoasi “Yangi O‘zbekiston” universiteti talabalar kengashi uchun o‘tkazilgan saylovlarda g'oliblikni qo‘lga kiritdi
🗳 “Yangi O‘zbekiston” universiteti talabalar kengashi prezidentligi uchun o‘tkazilgan saylovda MuhammadaliQodirov hamda uning “Meros” jamoasi g‘oliblikni qo‘lga kiritishdi.
📊 O‘tkazilgan saylov natijalariga ko‘ra “Meros” jamoasi 45.4% natijani qayd etishdi.
🎗Talabalar kengashi a'zolarini g'alaba bilan tabriklab, yangi o'quv yilida ko'plab loyihalarni kutib qolamiz.
🔁English
➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
#election#meros
⬇️Biz ijtimoiy tarmoqlarda:
Veb-sayt | Telegram | Instagram | Facebook
Timurid partiyasi saylovda g'alaba qozondi
⚡️ "Yangi O'zbekiston" universiteti Talabalar kengashi prezidentligiga o'tkazilgan saylovlar yakunlandi. Saylov natijalariga ko'ra Saidmurod Abrorov boshchiligidagi Timurid partiyasi eng ko'p (412 ta) ovoz to'plab, g'olib bo'ldi.
✅ Shuningdek, saylovda faol qatnashgan Meros jamoasi 206 ta, SSST jamoasi esa 68 ta ovozni qo'lga kiritdi.
🎗Ushbu ishonch va g'alaba bilan Saidmurod Abrorov hamda uning jamoasini tabriklaymiz. Kelajakda talabalar hayoti yanada qizg'in bo'lishiga ishonamiz.
🔁English
➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
#election#timurid
⬇️Biz ijtimoiy tarmoqlarda:
Veb-sayt | Telegram | Instagram | Facebook