Регулярно приходится писать и ревьюить код, где используется PySide2-6.
Заметил, что в подавляющем большинстве случаев настройка создаваемых базовых виджетов происходит через методы. Думаю, всем знаком такой способ.
Простой пример с кнопкой:
button = QPushButton("Click Me")
button.setMinimumWidth(300)
button.setFlat(True)
button.setStyleSheet("font-size: 20pt")
button.setToolTip("Super Button")
button.clicked.connect(lambda: print("Button clicked"))
Но есть и альтернативный способ - настройка через свойства. Это просто ключевые аргументы конструктора класса. Хоть они и не указаны в документации как аргументы, но они есть)
Этот код делает тоже самое но с помощью Property
button = QPushButton(
"Click Me",
minimumWidth=300,
flat=True,
styleSheet="font-size: 20pt",
toolTip="Super Button",
clicked=lambda: print("Button clicked"),
)
Где это может быть полезно
▫️ Это выглядит более аккуратно и коротко, уже повод использовать
▫️ Может использоваться в заполнении лейаута, когда нам не нужно никакое другое взаимодействие с виджетом и поэтому сохранять его в переменную не требуется. Например, лейбл или кнопка.
widget = QWidget(minimumWidth=400)
layout = QHBoxLayout(widget)
layout.addWidget(QLabel("Button >", alignment=Qt.AlignRight))
layout.addWidget(QPushButton("Click Me", clicked=lambda: print("Button clicked")))
widget.show()
Либо так
widget = QWidget(minimumWidth=400)
layout = QHBoxLayout(widget)
for wd in (
QLabel("Button >", alignment=Qt.AlignRight),
QPushButton("Click Me", clicked=lambda: ...)
):
layout.addWidget(wd)
widget.show()
▫️ Можно хранить настройки в каком-то конфиге или генерировать на лету, после чего передавать как kwargs.
kwargs = {"text": "Hello " * 30, "wordWrap": True}
my_label = QLabel(**kwargs)
Как получить полный список доступных свойств?
Эта функция распечатает в терминал все свойства виджета и их текущие значения
def print_widget_properties(widget):
meta_object = widget.metaObject()
for i in range(meta_object.propertyCount()):
property_ = meta_object.property(i)
property_name = property_.name()
property_value = property_.read(widget)
print(f"{property_name}: {property_value}")
#tricks#qt
Помнишь нейросеть Reve, которая отлично отрабатывала русскую эстетику — медведи, балалайки, хрущёвки, панельки? Так вот, они выкатили апдейт. Возможно, это очередной потенциальный соперник «бананы», но пока утверждать не берусь — нужно тестить.
Видео выглядит эффектно и явно скрывает интересные фишки. Видно, что есть механики с выделением, что-то в духе draw-to-edit. Если придумают реально инновационный подход — не постесняюсь стянуть себе в приложение, ха-ха.
Плюс обещают API, а если проект «выиграет гонку редактирующих нейронок», то можно будет интегрировать и в собственный софт. В целом — очень любопытная история.
👉reve.art
😂 Тестим, показываем результаты в комментах, ты мне реально помогаешь этим! Чем больше тестов тем четче вывод по нейронке на канале)🖖
#reve | AcidCrunch
🖼 Rеve — это про то, когда уже ничего нового не ждёшь от генерации изображений, а оно всё равно удивляет.
Немного о волшебстве под капотом (наблюдения частично проверены нами, частично коллегами):
🟤 Ослабленная цензура — Rеve пока не боится крови, жути и даже девушек в нижнем белье. 😂 А вот совсем топлес — не-а. За слова не ругает, но картинки выдаёт в размытии, либо совсем "плоско".
🟤 Советская эстетика и "наш вайб" — чутко ощущает атмосферу ДК, панелек, гаражей и дачного трэша.
🟤 Фотореализм и эмоции — типажи нестандартные, позы естественные и живые, группы персонажей не сливаются в одно лицо, эстетика замечательная. Иногда путается с пальцами и глазами, и это окей.
🟤 Знаменитости, бренды и логотипы — узнаёт, рисует, молодец!
Бесплатные баллы на генерации прилетают каждый день, а если затянет — есть подписка по вменяемой цене.
👍 Картинки немного детализировали в Leonardo.
#reve#leonardo
🧐 Провела эксперимент:
«Нейрогенерации за 5 минут»
🔅1️⃣ Идём в ⚛️ChatGPT и пишем ему это задание:
Привет! Помоги придумать 10 промтов для тестирования разных нейросетей по созданию изображений.
⚜️ Требования к промтам:
1️⃣ Каждый промт должен быть подробным и цельным описанием сцены в стиле визуального сторителлинга.
2️⃣ Включать:
🔘 персонажа (человек, внешний вид, эмоции, одежда, бренд),
🔘 окружение и атмосферу (локация, детали фона, время суток, погодные условия),
🔘 угол съёмки, композицию, тип камеры, объектив или плёнку,
🔘 свет (тип освещения, цветовая палитра),
🔘 художественные эффекты (grain, lens flare, bokeh и т.п., если уместно).
3️⃣ Каждый из 10 промтов должен содержать уникальные параметры (разные ракурсы, локации, свет, стиль одежды и бренды, атмосферу и пр.).
4️⃣ Все промты в эстетике fashion и lifestyle, с упором на фотореализм и ощущение настоящей фотографии (никакой иллюстрации, 3D, анимации и пр.).
5️⃣ Структура промта: единый художественный абзац, без списков, но с полной детализацией сцены.
🤖 Задача: придумай 10 таких промтов с уникальными параметрами, чтобы я мог использовать их для теста нейросетей вроде: Midjourney, FLUX, Imagen 4, Reve, Sora. Каждый промт пиши на двух языках: русском и английском.
🔅2️⃣ Берём полученные промты и пробиваем их по очереди в любимой нейросети.
Для поста я выбрала Reve (дополнительно можно включить функцию улучшенной доработки промта).
🔅3️⃣ Скачиваем картинки и выкладываем пост в Telegram-канал.
🎉 Всё! Вы восхитительны!
Собираем лайки, восторженные комментарии и продаём курсы: "Как генерировать за секунду и зарабатывать миллионы с нейорсетями"
🫢
А если серьёзно — это классное упражнение, чтобы прокачать насмотренность: учиться прописывать разные ракурсы, типажи, настройки камеры и композиционные решения (см. пункт 2 шага 1).
☝️ Все генерации — с первой попытки и без доработок.
Бесплатных кредитов Reve хватило на 2 круга промтов от ChatGPT — это 20 разноплановых картинок.
🔅🔅🔅🔅🔅🔅
⭐️👍💚🔖💬⏳
#практикаИИ#chatgpt#reve