Установить свойства виджета в 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
Google DeepMind: как ИИ-гигант захватывает все фронты
Пока OpenAI металась между моделями, облаками и попытками захватить рынок, Google ждал своего часа. 🕰️
Спокойно дорабатывая экосистему, вкладываясь в железо и собирая данные, гигант подошел к 2025 году с абсолютным преимуществом. Теперь их победа очевидна даже скептикам.
🔥Лидерство моделей
➡️Gemini 2.5 Pro — №1 в ключевых тестах: LMArena, GPQA Diamond, AIME.
➡️Gemini 2.5 Flash (скоро в релизе) — скорость и стоимость в разы лучше аналогов (даже DeepSeek).
➡️Gemma 3 — open source модель уровня Llama 4 и DeepSeek-v3 но компактнее.
🎯Интеграция в экосистему
➡️1 млн токенов контекста + доступ к Google Поиску, YouTube, Workspace.
➡️Миллиарды пользователей получат Gemini бесплатно через Android, Chrome, Gmail.
🛠️Не только LLM
➡️Veo 2 — топ в генерации видео.
➡️Project Astra (ассистент) и Mariner (взаимодействие с ПК) — прорыв в агентских системах.
➡️Google Workspaces (ранее G Suite) - все собрано в одном флаконе для корпоративного пользователя.
➡️Imagen 3 (изображения) и Lyria (музыка) — пока не топ в своих категориях, но явно догонят, так как были выпущены ещё в прошлом веке (в прошлом году, если быть точнее, но в ИИ это сравнимо с прошлым веком)..
⚡Железо и облака
➡️TPU Ironwood — чипы 7-го поколения для AI-инференса (конкурент Nvidia Blackwell и Huawei Ascend).
➡️Google Cloud + собственные серверы = независимость от Microsoft/AWS.
🆚Почему конкурентам не догнать?
➡️У OpenAI нет своего железа, облака и 2 млрд пользователей «из коробки».
➡️Anthropic зависит от AWS, а Meta сосредоточена на open source, а не продуктах.
➡️Илон Маск с Grok-3 хорошо продаёт полеты на Марс, но у него проблемы с железом (StarGate только стартует).
➡️Apple кажется просто отстал на повороте...
➡️Главный козырь Google: данные. YouTube, Поиск, Карты — это тренировочная база, которой вместе нет ни у кого.
⚠️Но есть нюансы
➡️Gemini всё ещё отстаёт в креативном письме (хотя прогресс есть).
➡️При тестировании не все гладко, мои тесты.
➡️Бесплатный доступ — пока маркетинг. Цены могут вырасти после массового внедрения.
➡️Пока ИИ от Google за VPN, китайцы удобнее...
Резюме:
Google не просто вернулся в игру — он переписывает правила. И да, это тот редкий случай, когда «too much winning» — не мем, а реальность. 🚀
P.S. Тем, кто верил в xAI: наши соболезнования.
https://t.me/semasci
#ИИ#AI#GoogleAI#DeepMind#GeminiAI#Veo2#imagen3#lyria
#jupyter_notebook#chirp#gemini#google_cloud#imagen#lyria#nano_banana#veo#vertex_ai
GenMedia Creative Studio is a web app that lets you use Google Cloud’s generative AI tools to create images, videos, music, and speech. It includes features like Imagen for images, Veo for videos, Lyria for music, and Chirp for speech, plus creative workflows for tasks like virtual try-ons and moodboards. You can experiment with these tools to quickly make and test creative media, helping you bring new ideas to life faster and more easily.
https://github.com/GoogleCloudPlatform/vertex-ai-creative-studio