Установить свойства виджета в 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
Всемирный квантовый день (2026)
#science
На дудле изображена сфера Блоха — наглядное представление принципа работы кубита [наименьшая единица информации в квантовом компьютере (аналог бита в обычном компьютере), использующаяся для квантовых вычислений]. В то время как классический бит может принимать только значения 1 или 0, кубит может находиться в состоянии, сочетающем оба этих значения, которое называется суперпозицией. Используя суперпозицию и другие квантовые свойства, квантовые компьютеры способны решать конкретные сложные задачи, которые недоступны для современных суперкомпьютеров.
Психопаты, нарциссы и просто тупые люди являются главными участниками политических срачей в интернете — исследование.
Сингапурские учёные решили выяснить, как психические отклонениявлияют на интерес к политической тематике в интернете (комментарии, репосты, лайки и т.п.). В работе приняли участие несколько тысяч человек из различных стран.
Согласно выводам, часто срутся на тему политики люди с антисоциальными чертами и низким уровнем критического мышления. Активнее всех ведут себя:
● Психопаты — они стабильно участвуют в активных политических спорах онлайн. Такие люди специально выбирают среду с низкими барьерами входа, возможностью анонимно влиять, спорить, манипулировать, провоцировать;
● Нарциссы — участвуют в политических срачах ради признания;
● Люди с низким интеллектом — обычно попадают под влияниеманипуляций и участвуют импульсивно, часто проявляя агрессию.
В целом авторы отмечают, что чем ниже интеллект, тембольше у человека желания участвовать в политических срачах.
У каждого есть такой друг
r/#science
Психопаты, нарциссы и просто тупые люди являются главными участниками политических срачей в интернете — исследование.
Сингапурские учёные решили выяснить, как психические отклонениявлияют на интерес к политической тематике в интернете (комментарии, репосты, лайки и т.п.). В работе приняли участие несколько тысяч человек из различных стран.
Согласно выводам, часто срутся на тему политики люди с антисоциальными чертами и низким уровнем критического мышления. Активнее всех ведут себя:
● Психопаты — они стабильно участвуют в активных политических спорах онлайн. Такие люди специально выбирают среду с низкими барьерами входа, возможностью анонимно влиять, спорить, манипулировать, провоцировать;
● Нарциссы — участвуют в политических срачах ради признания;
● Люди с низким интеллектом — обычно попадают под влияниеманипуляций и участвуют импульсивно, часто проявляя агрессию.
В целом авторы отмечают, что чем ниже интеллект, тембольше у человека желания участвовать в политических срачах.
У каждого есть такой друг
r/#science
日本公司推出 AI 自动洗澡机,约 272 万元人民币
日本Science公司推出一款价值约272万元人民币的AI自动洗澡机。该机器采用纳米气泡技术,能在15分钟内完成全身清洁和烘干。机器内嵌AI,可监测健康、调节水温,并提供沉浸式场景和音乐,旨在为行动不便者提供便利,并呼应了1970年大阪世博会的“洗澡机”概念。
标签:#science
Created by RocM
官方频道:@rocCHL
官方群组:@roctech
官方合作:@rocmmbot
The mesmerizing patterns you see are the result of a frequency resonating with water in a dish. These structures aren’t the frequency itself, but how it interacts with the medium. One frequency can create endless designs depending on the setup.
@Viral_Today / #science
Why does Fentanyl feel so good?
Fentanyl hits the brain in seconds, delivering intense euphoria—but it’s up to 50 times stronger than heroin, making it dangerously easy to overdose.
In 2022, fentanyl claimed more lives than all U.S. military deaths since the 1960s.
@Viral_Today / #science