Установить свойства виджета в 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
@Regrambot
Qué puede hacer este bot?
Este bot te permite darle seguimiento a una cuenta de instagram y descargar su contenido
Idioma: Múltiple
(visto en @BotsGram_cu)
#insta, #instagram, #social, #inline
💀💀💀💀 (FB/Insta) запустили аккаунты с цифровыми #AI аватарами популярных инфлюенсеров/селебов (каждый из которых продал свое лицо за $5M) для 🌐 Facebook и 🌐 Instagram.
Многие ленивые #insta блохеры мечтают заменить себя на #chatGPT и чилить на Бали, но как мы видим крупные корпорации первыми решили заработать на этом, а может даже полностью монополизировать эту нишу.
Смысл продукта прост: ты можешь пообщаться со своей любимой звездой в #instagram или #facebook. Как обещает Meta - общение максимально приближенно к реальному персонажу. Для соц.сетей решается больной вопрос ретеншена и энгейджмента, а для инста-юзера открывается новый дивный мир общения с ИИ с фоткой твоего кумира.
Как это реализуется:
- берутся диалоги/переписки/посты инфлюенсера и делается файн тюнинг модели ИИ
- meta использует свою opensource модель LLAMA 2, которую можно запустить даже у себя на компе оффлайн
- если немного посидеть над кодингом, то такой ИИ-аватар/чат-бота можно уже сделать и для вашей инсты и для телеграм (и под разные бизнес и персональнык задачи).
Ссылки на доступные ИИ-аккаунты можно найти тут, но чаты доступны пока только для полосато-звездного флага.
Романтический рок — необычный и очень красивый жанр музыкального воспроизведения, в котором далеко не каждый способен искренне выразить всю богатую палитру нот. Необычные и очень красивые стихи в исполнении харизматичного эрудированного и выдающегося автора-исполнителя российского шоу-бизнеса. Мелодии и ритмы создают торжество в душе, а стихи и слова наполняют приятными и разными чувствами. Павел Кашин — легенда жанра, выступит с сольным концертом на сцене MT music bar 17 октября
Билеты: здесь
⌚️24/7
📍Новый Арбат, 15
📲+79773541515
#афишамосква#москва#арбат#новыйарбат#мумийтролльбар#мтбар#мтмосква#мумийтролль#mtbar#music#moscow#arbat#insta
3 июля свой день рождения Michael Blayze отметит в МТ Music Bar грандиозным концертом под живую музыку, на котором он исполнит хиты легендарных исполнителей: Ne-Yo, Chris Brown, Usher, James Brown, 50 Cent, Ceelo и др, а также совместно со своими музыкантами презентует свой долгожданный EP-album «Сильней». Michael Blayze – россиянин с нигерийскими корнями, участник телепроектов «Голос на первом канале», «Голос Украины», «Новая волна», «Ну-ка все вместе». Мегахаризматичный и талантливый артист мирового масштаба, обладатель уникального тембра голоса. Его выступления поражают своей мощью и бесподобным мастерством. Композитор, автор и исполнитель песен на различных языках, в том числе и на русском!
▪️ Встречаемся в МТ ~ 03.07
▪️ Сбор гостей ~ 20:00
⌚️24/7
📍Новый Арбат, 15
📲+79773541515
#афишамосква#москва#арбат#новыйарбат#мумийтролльбар#мтбар#мтмосква#мумийтролль#mtbar#music#moscow#arbat#insta#instamoscow
ВСТРЕЧАЙТЕ ГРУППУ ГОРОД 312
ОНИ СНОВА НА СЦЕНЕ , СНОВА СО СВОИМИ ЛЮБИМЫМИ ПОКЛОННИКАМИ
😌
😉
😌
😉
😌
Из соцсетей и новостных изданий многим уже известно, что «Город 312, спустя год, возобновляет свою творческую и концертную деятельность. Такая длительная пауза была связана с болезнью солистки (осложнения возникли после коронавируса). Пока наша любимая Ая (Светлана Назаренко) продолжает восстанавливать здоровье, петь в коллективе будет Диана Макарова. Решение совместное, Ая уже выступила с заявлением по этому поводу. В конце марта мы представим сингл «Радость». Это дуэтная композиция.
Репетируем, готовим новый альбом к выходу в свет.
В программе все самые лучшие и известные песни нашего коллектива и новые произведения.
• состав Город 312 :
Дмитрий Притула — клавиши , вокал
Диана Макарова — вокал
Мария Притула — гитара
Леонид Притула — басс гитара
Александр Климович — барабаны
🎫 Билеты: купить▫️▫️▫️▫️▫️
⌚️24/7
📍Новый Арбат, 15
📲+79773541515
📱Instagram
#афишамосква#москва#арбат#новыйарбат#мумийтролльбар#мтбар#мтмосква#мумийтролль#mtbar#music#moscow#arbat#insta#instamoscow
Зажигательная группа «Jazzøver» – это сразу семь поющих и играющих красоток на сцене, которые своим насыщенным звучанием безоговорочно создадут для вас летнее настроение!
Только самые яркие хиты, любимые песни и драйвовые танцы!
Приходи, такое нельзя пропустить — 8 июня в MT music bar!
🔴
🎫Билеты: купить▫️▫️▫️▫️▫️
⌚️24/7
📍Новый Арбат, 15
📲+79773541515
📱Instagram
#афишамосква#москва#арбат#новыйарбат#мумийтролльбар#мтбар#мтмосква#мумийтролль#mtbar#music#moscow#arbat#insta#instamoscow
Хотим напомнить! 😍
Воскресенье ~ четверг с 16:00 до 20:00 предлагаем гастрономическое удовольствие от шеф-повара, состоящее и 4-х блюд, а к сету можно заказать бокал вина за 400₽.
⌚️24/7
📍Новый Арбат, 15
📲+79773541515
#афишамосква#москва#арбат#новыйарбат#мумийтролльбар#мтбар#мтмосква#мумийтролль#mtbar#music#moscow#arbat#insta#setmenu
Хотим напомнить! 😍
С воскресенья по четверг с 16:00 до 20:00 предлагаем гастрономическое удовольствие от шеф-повара, состоящее и 4-х блюд, а к сету можно заказать бокал вина за 400₽.
⌚️24/7
📍Новый Арбат, 15
📲+79773541515
#афишамосква#москва#арбат#новыйарбат#мумийтролльбар#мтбар#мтмосква#мумийтролль#mtbar#music#moscow#arbat#insta#setmenu