Установить свойства виджета в 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
#Atlas bayrami
📌 2018-yilda Marg‘ilonda “Atlas bayrami” festivali o‘tkazilgan
⚡️2018-yil 11–15-sentabr kunlari Marg‘ilon shahrida an’anaviy to‘qimachilik festivali — “Atlas bayrami” bo‘lib o‘tdi. Festivalda Xitoy, Ispaniya, Indoneziya, AQSH, Fransiya, Madagaskar, Mongoliya, Tojikiston, Qozog‘iston, Qirg‘iziston va Rossiya kabi 10 dan ortiq davlatlardan mehmonlar ishtirok etdi.
🎓 Festival doirasida Marg‘ilon Hunarmandchilikni rivojlantirish markaziga UNESCO nomoddiy madaniy merosni muhofaza qilish bo‘yicha ilg‘or amaliyotlar reyestriga kiritilganligi haqida sertifikat topshirildi.
📊2018-yil 11–13-sentabr kunlari yosh hunarmandlar va dizaynerlar uchun:
✅an’anaviy kashtachilik,
✅kigizchilik san’ati,
✅milliy matolar asosida kiyim dizayni,
✅hunarmandchilik tadbirkorligi yo‘nalishlarida treninglar tashkil etildi.
📊Unda 60 ga yaqin yosh hunarmand va dizaynerlar qatnashdi.
📊Festival dasturidan:
1️⃣yosh dizaynerlar kolleksiyasining defile namoyishi,
2️⃣“Buyuk ipak yo‘li: an’analarni davom ettirib…” nomli an’anaviy to‘qimachilik ko‘rgazmasi,
3️⃣xalq sayillari va konsert dasturlari,
4️⃣askiyachilar, kurashchilar va dorbozlar chiqishlari,
5️⃣qo‘g‘irchoq tomoshalari,
6️⃣“Hunarmandlar shaharchasi” yarmarkasi o‘rin oldi.
🇺🇿Festivalning asosiy maqsadi — milliy hunarmandchilik an’analarini asrab-avaylash, uni targ‘ib qilish va kelajak avlodga yetkazish, shuningdek yoshlar hamda xotin-qizlarni hunarmandchilik sohasida qo‘llab-quvvatlashdan iborat.
✅Faсebook|
✅Instagram
✅Youtube |
✅Murojaat yo'llash
波士顿动力 Atlas 人形机器人秀后空翻差点摔倒,手部保护罩被甩飞
波士顿动力在 CES 展示新一代 Atlas,人形机器人成功完成后空翻但落地时短暂失衡。机器人为保持平衡剧烈挥动手臂,导致手部保护罩被甩飞。尽管后空翻在工厂无实际用途,但仍被视为展示其灵巧性的重要动作。
标签:#atlas
Created by RocM
官方频道:@rocCHL
官方群组:@roctech
官方合作:@rocmmbot
😂Ну что, можешь меня поздравить — купил себе новенький Mac на M4 Max и установил свеженький Atlas. Будем тестить!
Где взял расскажу в скором времени, считай будет реклама, но с личной рекомендацией
#atlas | AcidCrunch
OpenAI выпустил сегодня браузер #Atlas
От браузера там нет практически ничего, только Home страница теперь chatgpt com. Зачем они на это время и деньги только тратят 😅
🦾 Boston Dynamics показали впечатляющее видео своего робота.
Atlas получает изображение с камеры, данные о положении тела и текстовую команду. На основе этого модель генерирует плавные движения всего корпуса 30 раз в секунду.
Это не набор хрупких скриптов, а система, которая сама «думает», как выйти из ситуации.
Вместо того чтобы «прыгать» от точки к точке, система сразу строит короткую последовательность действий — примерно на полторы секунды вперёд.
Часть из них выполняется, а потом план обновляется, чтобы движения оставались точными и естественными.
Робот показывает, что может работать в реальном бардаке, где всё падает, двигается и мешает работе.
@ai_machinelearning_big_data
#ai#robots#BostonDynamics#atlas
#BostonDynamics#Humanoids#Atlas
В начале января на CES 2026 Boston Dynamics показала новую коммерческую версию робота Atlas (писал об этом здесь). Поскольку исследовательская версия уходит на пенсию, компания показала ролик, где предыдущая версия Atlas перед уходом демонстрирует прыжки, сальто назад, почти человеческий бег и, конечно, неудачные попытки всего этого.