Установить свойства виджета в 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
Echidna Global Fellowship 2026 (Fully Funded in USA) 🇺🇸
Visit: https://opportunitiescorners.com/echidna-global-scholar-program/
The Program Covers Stipend, Airfare Tickets, Accommodation, Visa Cost, and Health Insurance.
#OpportunitiesCorners#Fellowship#USA
04 Days Left to Apply: Summer Research Program 2026 in Bulgaria 🇧🇬 (Fully Funded)
Visit: https://opportunitiescorners.com/bulgaria-insait-summer-fellowship/
12 Weeks Summer Internship for all the Nationals. No IELTS. No Fee.
The Program Covers Airfare, Accommodation, 2000 Euro Stipend, and Visa Support.
Deadline: 8 March 2026
#BulgariaSummer#Fellowship#OpportunitiesCorners
MIT KSJ Fellowship 2026/27 in USA 🇺🇸 (Fully Funded)
Visit: https://opportunitiescorners.com/mit-ksj-fellowship/
9 Months Program. Open to all the Nationals. The Program Covers Airfare, Housing, Insurance, 85000 USD Stipend.
#KSJ#USA#Fellowship#OpportunitiesCorners
2026 Berlin Fellowship in Germany 🇩🇪 (Fully Funded)
Visit: https://opportunitiescorners.com/berlin-fellowship-program/
The Program Covers Airfare, Meals, Accommodation, Monthly Stipend, Living Expenses, Health Insurance.
#Berlin#Fellowship#Germany#OpportunitiesCorners
Field research fellowship
If you're a UPSC student and thinking about a Plan B, this could be the perfect opportunity for you. Data Analytics for Public Policy Fellowship is a 2 months , fully online program that allows you to explore the world of quantative research methods. It's a great way to test your interests and see if research could be your Plan B. The program runs from 5th January to 15th March 2025, and you won't need to travel for fieldwork—everything can be done in your own neighborhood. With limited seats, this is a chance to explore new opportunities without a long-term commitment. Apply by 4th January.
https://iisppr.org.in/data-fellowship/
#UPSC#CareerPlanning#Fellowship#NewOpportunities
Field research fellowship
If you're a UPSC student and thinking about a Plan B, this could be the perfect opportunity for you. The IISPPR Field Research Fellowship is a one-month, fully online program that allows you to explore the world of qualitative research methods. It's a great way to test your interests and see if research could be your Plan B. The program runs from September 1 to 30, 2024, and you won't need to travel for fieldwork—everything can be done in your own neighborhood. With limited seats, this is a chance to explore new opportunities without a long-term commitment. Apply by August 15
https://iisppr.org.in/
#UPSC#CareerPlanning#Fellowship#NewOpportunities
Field research fellowship
If you're a UPSC student and thinking about a Plan B, this could be the perfect opportunity for you. The IISPPR Field Research Fellowship is a one-month, fully online program that allows you to explore the world of qualitative research methods. It's a great way to test your interests and see if research could be your Plan B. The program runs from September 1 to 30, 2024, and you won't need to travel for fieldwork—everything can be done in your own neighborhood. With limited seats, this is a chance to explore new opportunities without a long-term commitment. Apply by August 15
https://iisppr.org.in/
#UPSC#CareerPlanning#Fellowship#NewOpportunities
Field research fellowship
If you're a UPSC student and thinking about a Plan B, this could be the perfect opportunity for you. The IISPPR Field Research Fellowship is a one-month, fully online program that allows you to explore the world of qualitative research methods. It's a great way to test your interests and see if research could be your Plan B. The program runs from September 1 to 30, 2024, and you won't need to travel for fieldwork—everything can be done in your own neighborhood. With limited seats, this is a chance to explore new opportunities without a long-term commitment. Apply by August 15
https://iisppr.org.in/
#UPSC#CareerPlanning#Fellowship#NewOpportunities
🇫🇷 Paris Collaborative Fellow 2026 | Fully funded
Дедлайн: 26 февраля 2026 | Страны: все | Уровни: школьники 12–18 лет
Что покрывают
Участие в глобальной программе для молодых инноваторов
Возможность презентовать проект перед международной экспертной панелью
Наставничество и сопровождение
Возможные предложения стажировок и рекомендательные письма
Доступ к международному сообществу участников из 80+ стран
Где учиться
Paris Collaborative (международная программа, онлайн/гибридный формат)
Подать онлайн: https://pariscolab.com
#fellowship#innovators#youth#startup#science#technology#socialimpact
🚀 Tether-Linked Super PAC Reports $300,000 Ad Spend Amid Zero Account Balance
Fellowship, a super PAC reportedly associated with Tether, has revealed a $300,000 advertising expenditure to Nxum Group, a company co-founded by Tether US CEO Bo Hines. According to NS3.AI, the Federal Election Commission filing indicates that the spending was in support of Georgia Republican Clay Fuller. Despite this significant expenditure, Fellowship's current federal disclosures continue to show its accounts at zero, even after a prior announcement that it would be established with pledges totaling $100 million.
#Tether#SuperPAC#AdSpend#NxumGroup#BoHines#FederalElectionCommission#GeorgiaRepublican#ClayFuller#Fellowship#PoliticalExpenditure#ZeroBalance#NS3AI