Установить свойства виджета в 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
📬Mail.ru → Mail
ℹ️Mail yangilangan versiyasini taqdim etdi: endi nomida .ru domenisiz va korporativ palitrada quyuq ko'k va och yashil ranglar bilan.
🐶 Pochta ham maxsus maskotga ega - Bayt. U foydalanuvchilarni Mail mahsulotlarining xususiyatlari va yangilanishlari bilan tanishtiradi. Sun'iy idrok texnologiyasi bilan boyitilgan.
☹️ Aytgancha, afsonaviy Mail.ru Agent bir necha kun oldin faoliyatini yakunlagani haqida ham bilsangiz kerak...
➡️#mailru | Birinchi raqamli IT-Blog
⚡️К Дню Победы запущен сервис, который может восстановить старые фотографии.
Заходите на сайт, загружайте фото, и через несколько секунд получите обновленный снимок. Сервис способен восстановить незначительные детали или раскрасить черно-белое изображение.
Работает бесплатно, без регистрации.
На видео демонстрация работы.
#ИИ#AI#Нейросети#Mailru
———
#Инструменты#Изображения
✍️Подписывайтесь: @aiforproduct
#вакансия
Data Engineer в VK Adtech, Москва
Департамент создаёт рекламные продукты и инструменты для бизнеса. Это myTarget, рекламный кабинет ВКонтакте и платформа VK Реклама. Наши разработки также интегрированы в другие продукты VK: Одноклассники, Портал и Почту Mail․ru. Всё это открывает бизнесу доступ к 95% мобильной аудитории рунета. В команде минимум бюрократии и максимум возможностей влиять на продукт — воплощение фич от идеи до релиза может занимать всего пару недель.
Ищем опытного и самостоятельного дата-инженера, который будет участвовать в создании ML-инструментов. Предстоит разрабатывать и поддерживать код на Scala/Spark (UDF/UDAF, Spark ML Transformers, etc.) и Python (платформа ML/ETL). А ещё помогать команде следить за качеством генерируемых данных.
У нас вы будете работать с данными популярных соцсетей (ВК, ОК, Дзен) и других проектов экосистемы VK. Также надеемся, что вам понравится наш кластер Hadoop на примерно 100 петабайтов.
Задачи:
• Проектировать, разрабатывать и поддерживать инструменты для создания надёжных пайплайнов обработки данных;
• участвовать в развитии системы для создания и использования ML-моделей;
• исследовать и интегрировать в продукт новые источники данных;
• создавать витрины признаков для ML-моделей.
Требования:
• Знание алгоритмов и структур данных;
• умение писать качественный, поддерживаемый код на Scala, Python, SQL;
• опыт использования Hadoop, знание механизмов распределённого хранения и обработки данных (HDFS, Spark, Hive);
• знакомство с Bash, Git, Linux, Docker;
• опыт работы с терминалом по SSH.
Будет плюсом:
• Умение использовать Luigi, Airflow, Kafka;
• опыт написания Spark UDF/UDAF на Catalyst API и трансформеров spark.ml;
• знание Java и нюансов JVM;
• понимание классических ML-моделей, задач и методов DS.
✍️ Отправить CV и по всем вопросам: https://t.me/olkony
#de#ml#engineer#mailru#adtech#spark#python#hadoop#kafka#гибрид#remote#middle#senior
#вакансия
Data analyst / Data scientist, Москва
VK Реклама — одно из ключевых подразделений в VK. Ежедневно наши сервисы охватывают более 140 млн пользователей в России и странах СНГ. Более 100 тыс. рекламодателей каждый день запускают рекламные кампании у нас и находят своих клиентов. Мы — команда ML внутри VK Рекламы, отвечаем за её качество, чтобы пользователи могли увидеть наиболее подходящую им рекламу, а рекламодатели потратить свои бюджеты наиболее эффективно.
Основная задача нашего направления — проверять гипотезы, искать инсайты и точки роста эффективности и впоследствии внедрять их в прод. У нас идёт полный ML-цикл от проработки гипотезы до проведения экспериментов и внедрения фич в продакшен. Результаты нашей работы напрямую влияют на эффективность такого большого продукта, как VK Реклама.
Команда ad hoc аналитики занимается проверкой гипотез и поиском точек роста. Тестирует гипотезы в реальных экспериментах и оценивает изменения. Мы ищем в команду сильных аналитиков, совместными усилиями будем проводить различные аналитические исследования для повышения эффективности нашего продукта.
Задачи:
• Анализ больших данных для поиска потенциальных точек роста и выдвижения гипотез;
• ad hoc аналитика, поиски зависимостей в данных;
• проверка гипотез, поиск узких мест, донесение результатов до прода;
• оптимизация моделей рекламного аукциона и моделей ранжирования пользователей;
• проведение и статоценка экспериментов;
• разработка и автоматизация отчётности;
• сбор, обработка и дальнейшее использование больших данных.
Требования:
• Хорошее знание SQL (сложные запросы, порядок выполнения операций) — нужно написать не просто запрос, а оптимальный запрос, который сможет отработать на действительно больших данных;
• знание Python для анализа данных; библиотеки Pandas, Numpy — нужно будет сделать анализ данных, проработать гипотезы и правильно их визуализировать. Недостаточно просто найти какой-то паттерн — нужно его правильно представить наружу;
• работа с системами больших данных будет большим плюсом (Hadoop, PySpark);
• хорошее понимание матстатистики;
• анализ данных с учётом сезонности, поиски аномалий и выбросов в данных.
Будет плюсом:
• Опыт работы с ClickHouse, Hadoop, Git, Jenkins;
• работа с инструментами BI-отчётности, понимание ETL-инструментов (делаем автоматические отчёты, готовим для них данные, настраиваем выгрузки и другое).
✍️ Отправить CV и по всем вопросам: https://t.me/olkony
#ds#adhoc#analytics#ml#mailru#vk#adtech#sql#python#pandas#numpy#pysprak#hadoop#mathstat#clickhouse#гибрид#remote#middle#senior
Субботнее обращение
Тёмный Лорд благодарен тем, кто в этом канале с самого начала, и не винит тех, кто подумал «да что я здесь делаю?» и отписался. Я знаю, что немногие готовы и способны переварить все перипетии информационных войн (таких специалистов в нашей стране вообще мало), а остальных могут не интересовать PR и журналистика.
Но при этом мне искренне хочется, чтобы этот канал был достаточно прост для понимания и полезен не только профессионалам, но и всем неравнодушным к судьбе нашей Родины. Хочется показать, как всё, о чём здесь выходят посты, касается обычного человека. И, конечно, хочется подсветить ранее неизвестные или забытые медийной пучиной факты — честно и прозрачно для проверки.
Так что надеюсь, что вам тут интересно.
Обновлённый рубрикатор (жмите на тег, чтобы увидеть список постов с ним)
Виды постов: #новости#подборка#опрос#кейс
Сферы деятельности: #медиа#журналистика#PR#маркетинг#реклама#SMM#копирайтинг#работа
Глобальное: #инфовойны#фейки#дезинформация
Платформы: #Facebook#Google#Twitter#Instagram#TikTok#Telegram#Microsoft#Вконтакте#Mailru
Страны/регионы: #Россия#США#Великобритания#Белоруссия#Прибалтика
Издания: #RT#ВГТРК#МИА#Guardian#Bellingcat#Дождь
Остальное: #иносми#СерыйКардинал#наблюдения#мемы#релизы#ООН#OSINT#расследование#руководство#инструменты#цитаты#теория#наука#источники#IT#выборы#политика#музыка#документы