Установить свойства виджета в 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
⚠️ CISA confirms active exploitation of CVE-2025-68613 in the #n8n automation platform.
The expression-injection flaw allows authenticated attackers to run code with n8n process privileges—exposing data, altering workflows, or taking full control of the instance.
🔗 Read → https://thehackernews.com/2026/03/cisa-flags-actively-exploited-n8n-rce.html
🛑 Two critical flaws in #n8n enable remote code execution.
One bug lets attackers inject shell commands via public form inputs. Another escapes the expression sandbox.
Chained together, attackers could decrypt stored credentials including API keys, tokens, and passwords.
🔗 Details → https://thehackernews.com/2026/03/critical-n8n-flaws-allow-remote-code.html
⚡️200+ готовых сценариев для n8n
Нашёл простой и полезный ресурс: GitHub-репозиторий с 200+ бесплатными workflow для n8n.
Темы: продажи, маркетинг, учёт финансов, кодинг и личная продуктивность.
Что такое n8n
- Open-source инструмент для автоматизации без кода
- Визуальный конструктор: соединяете блоки и получаете процесс
- Есть сотни интеграций: почта, CRM, таблицы, мессенджеры, вебхуки
- Можно добавлять свою логику на JavaScript
- Запуск по расписанию или по событию, работает в облаке или на своём сервере
Как воспользоваться:
1) Скачайте нужный workflow (.json) и импортируйте в n8n
2) Вставьте свои API-ключи и учётные данные в блоки
3) Проверьте шаги и включите запуск по cron или webhook
▪Github
Update - еще 300 готовых решений: https://github.com/kossakovsky/n8n-installer
@ai_machinelearning_big_data
#n8n#ai#ml
📝 Кейс: Автоматизация сбора новостей об ИИ с помощью n8n
Создаем ассистента на платформе n8n, который автоматически собирает свежие новости о трендах в сфере искусственного интеллекта.
➡️Что делает ассистент:
• Автоматически запускается по расписанию.
• Собирает актуальные новости с NewsAPI.
• Генерирует краткие саммари с помощью OpenAI.
• Отправляет готовые материалы в Telegram для быстрой оценки и публикации.
📌Полное описание и пошаговую инструкцию с видео смотрите на нашем канале в Дзене. Там подробно показано, как настроить каждый модуль и подключить сервисы.
#ИИ#AI#Нейросети#n8n
———
#Кейсы#Агенты
✍️Подписывайтесь: @aiforproduct
📝 Собрали бота в n8n для автомониторинга ВКонтакте
Бот каждый час сканирует выбранные группы ВК, прогоняет новые посты через GPT и выдает структурированный анализ в Google Sheets.
Может быть полезно для:
✅ Мониторинга упоминаний бренда
✅ Отслеживания настроений аудитории
✅ Поиска новостных поводов
✅ Анализа активности конкурентов
✅ Сбора обратной связи от клиентов
➡️ N8n можно развернуть локально на ПК — никаких абонплат, всё бесплатно.
Подробная инструкция по сборке выложена в нашем канале на Дзене: "Шашков & Головко • AI в решениях"
#ИИ#AI#Нейросети#n8n
———
#Кейс#автоматизация
✍️Подписывайтесь: @aiforproduct
📬💬Создали автоматизацию в n8n: почта Mail.ru + GPT + Telegram.
Почтовый ящик подключается по IMAP, письма прогоняются через GPT, спам отсекается, по важным приходят уведомления в Telegram.
📍Что это даёт: если один почтовый ящик у вас и для работы, и для всего остального, а уведомления уже зашкаливают, решение помогает не упустить важное, не отвлекаясь на спам.
Подробные шаги и настройки — в Дзене «Шашков & Головко • AI в решениях». Там же лежит файл с готовым воркфлоу: можно скачать и развернуть у себя.
⏩Единственная тонкость: если n8n развёрнут на локальном сервере, нода с почтовым триггером может не подключаться — включаются защитные механизмы. На удалённом сервере, например на Бегете, всё работает без проблем.
#ИИ#AI#Нейросети#n8n
———
#Кейсы#Автоматизация
✍️ Подписывайтесь: @aiforproduct
📄Автоматизировали мониторинг по хештегам в ВК с помощью n8n
Разработали workflow для автоматического отслеживания постов по хештегам в ВК. Теперь не нужно каждый день вручную искать упоминания и собирать статистику.
Что делает:
✅ Каждый день по расписанию ищет посты с нужным хештегом
✅ Собирает всю статистику: просмотры, лайки, комментарии, репосты
✅ Определяет авторов и размер их аудитории
✅ Сохраняет данные в Google Таблицы без дублей
✅ Ведет счетчик дней для дальнейшей аналитики
Для кого полезно: SMM-щики, маркетологи, аналитики соцсетей
Подробный разбор настройки каждого узла, готовый код и файл workflow для скачивания — в нашем канале на Дзен "Шашков & Головко • AI в решениях"
#ИИ#AI#Нейросети#n8n
———
#Кейсы#Автоматизация
✍️Подписывайтесь: @aiforproduct
💻Как подключить модуль Google Drive к n8n: важная часть вашей автоматизации
Мы подготовили пошаговую инструкцию по настройке и подключению модуля Google Drive в n8n. Это базовый, но критически важный компонент для создания автоматизированных процессов с использованием файлов из Google Drive.
▫️Подробно разобрали процесс регистрации в Google Cloud
▫️Описали настройку OAuth для безопасного подключения
▫️ Показали как настроить Google Drive Trigger для отслеживания изменений
▫️ Объяснили все необходимые параметры подключения
Этот модуль — фундамент для дальнейшей интеграции Google Drive в ваши рабочие процессы. Используйте его как часть более сложных автоматизаций: RAG-систем, обработки документов и других потоков данных.
Полная инструкция с иллюстрациями доступна на нашем канале "AI в решениях" в Дзене!
#ИИ#AI#Нейросети#n8n
———
#Инструменты#Агенты
✍️Подписывайтесь: @aiforproduct