Установить свойства виджета в 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
Mistral 3: мультимодальный, открытый, но... уже догоняющий
Французская Mistral AI выпустила семейство моделей Mistral 3. Главное:
✅ Mistral Large 3 (41B) — мультимодальная (текст+изображение), открытая (Apache 2.0). Похожа архитектурно на DeepSeek V3.
✅Ministral (14B, 8B, 3B) — тоже мультимодальные, компактные.
Но грустная правда: это не прорыв. Модель на бенчах лишь сравнивается с DeepSeek-V3.1 и Kimi K2, которые уже стали стандартом. Пока европейцы готовили релиз, в Китае вышла уже следующая итерация.
Архитектурное «вдохновение» у китайских коллег и скромные результаты делают релиз скорее шагом в догоняющих. В опенсорс-гонке ИИ Китай пока уверенно рулит, задавая темп и планку.
Европейский ИИ стабилен: круассаны есть, прорывов нет.
#MistralAI#ИИ#Opensource#LLM
https://t.me/semasci
🇫🇷Mistral Publishes First Full Lifecycle Emissions Report for AI Model
French AI company Mistral has released what it describes as the first "comprehensive lifecycle analysis" of an AI model, titled “Our contribution to a global environmental standard for AI.” The report covers the environmental impact of model development end-to-end, marking a step toward establishing global benchmarks for carbon transparency in AI.
As the energy demands of training and deploying large models draw increasing scrutiny, Mistral’s move sets a precedent: environmental accountability is no longer optional in frontier AI development. Without lifecycle visibility, sustainable innovation remains an empty claim.
#AI#Sustainability#MistralAI#AIEthics
⚡️Mistral выпустила Small 4.
Mistral Small 4 - это мультимодальный комбайн, который закрывает сразу три задачи: ризонинг, агентный кодинг и работу с изображениями. Раньше под каждую из них была отдельная модель: Magistral, Devstral и Pixtral. Теперь один чекпоинт,
🟡Архитектура
MoE с 128 экспертами, из которых на каждый токен активируются 4. Всего 119B параметров, активных - 6B на токен. Контекстное окно - 256 тыс. токенов.
По сравнению с Mistral Small 3 в новой версии задержка сократилась на 40%, пропускная способность выросла в 3 раза.
Ключевая фича - параметр reasoning_effort. Если поставить none будет быстрый чат-режим, как в Small 3.2, а с ключом high модель начнет разворачивать цепочку рассуждений, сопоставимую с Magistral. Переключение в рантайме, без смены модели.
🟡Тесты
Small 4 с включенным reasoning обходит GPT-OSS 120B на LiveCodeBench и генерирует при этом на 20% меньше токенов.
На AA LCR набирает 0.72 при длине ответа 1.6K символов. Для сравнения, модели Qwen для тех же результатов нужно от 5.8K до 6.1K.
Для self-hosted деплоя минимальный стенд - 4× NVIDIA HGX H100, 2× HGX H200 или 1× DGX B200.
Попробовать бесплатно можно на build.nvidia.com, через Mistral API или AI Studio.
📌 Лицензирование: Apache 2.0 License.
🟡Статья
🟡Набор моделей
@ai_machinelearning_big_data
#AI#ML#LLM#MistralSmall4#MistralAI
🚀 Mistral представили обновления для Le Chat:
- Более 20 коннекторов на базе MCP — от Databricks и Snowflake до GitHub и Asana.
- Новая функция Memories — ассистент запоминает важные взаимодействия, а пользователь может полностью управлять памятью (добавлять, редактировать, удалять).
Обновления делают Le Chat одним из самых удобных и готовых к бизнес-задачам AI-ассистентов.
Попробовать можно на сайте chat.mistral.ai или в мобильном приложении.
🟠 Подробности: https://mistral.ai/news/le-chat-mcp-connectors-memories.
@ai_machinelearning_big_data
#MistralAI#LeChat#AIassistant#MCP
Circle Acquires Hashnote; $5.6M for Wingbits
🔍 Institutional investment management platform Hashnote acquired by Circle.
💰 Wingbits, a token-incentivized flight tracking network, raises $5.6M in a strategic funding round led by Borderless Capital and Bullish, with participation from various investors.
🔄 Significant crypto movement detected: 2,410 #BTC (worth $253M) transferred to Coinbase Institutional.
⚡ Mantle announces a financial blockchain center with a treasury of $4.3B, planning expansion of mETH and FBTC Protocols in 2025.
🌐 Mistral AI aims for IPO and opens Singapore office as part of regional expansion.
🏛️ Major U.S. Bitcoin miner MARA advocates for Bitcoin reserves in 50 states with state-level bills under consideration.
🚀 Stargate Project initiated by tech giants for AI infrastructure in the U.S., with $500 billion investment planned by 2029.
🔗Read more about Mantle's blockchain center.
#Hashnote#Circle#Wingbits#Crypto#BTC#Mantle#mETH#FBTC#MistralAI#IPO#MARA#Bitcoin#StargateProject#AI#VC