Установить свойства виджета в 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
#live#Seoul#TITF#SITF
😃TXTY-2023: Seulda SITF-2023 xalqaro yarmarkasi doirasida TXTY-2023 ko‘rgazma maydonlarining faol sotuvi amalga oshirilmoqda
📷Fotoreportaj
😃ТМТЯ-2023: Проходит активная продажа выставочных площадей ТМТЯ-2023 в рамках международной ярмарки туризма SITF-2023 в Сеуле
📷Фотоотчет
😃TITF-2023: Active sale of TITF-2023 exhibition venues take place within the framework of the international tourism fair SITF-2023 in Seoul
📷Photo report
🌍TITF
✅Telegram
📸Instagram
💬Facebook
Привеееет привет, дорогие!! 🤗
Ох, как долго я не выкладывала новые посты, но за это время я приготовила несколько вкусных корейских блюд, засняла их и скоро выложу для Вас рецепты))
А сегодня я хочу рассказать Вам о Lotte World Tower ☝🏼
Будучи современным символом Сеула, Lotte World Tower интересно переплетается с корейской кухней и культурой, хоть и не так очевидно, как исторические достопримечательности. Башня настолько высокая, что ее хорошо видно с разных уголков Сеула ☝🏼
Расскажу несколько интересных фактов.
Гастрономический рай: Внутри Lotte World Tower расположено множество ресторанов, представляющих как традиционную корейскую кухню, так и современные гастрономические тренды. От изысканного ханджонсик (традиционный корейский обед из множества блюд) до уличной еды, башня предлагает посетителям полное погружение в кулинарное разнообразие Кореи.
Культурные мероприятия и выставки:
В Lotte World Tower часто проводятся различные культурные мероприятия, выставки и фестивали, посвященные корейским традициям, искусству и истории.
Архитектура и дизайн с корейскими мотивами:
Хотя дизайн башни в целом современный, в нем можно найти и отсылки к корейской культуре. Например, форма башни - вдохновленная керамикой и каллиграфией.
Шопинг - часть корейской культуры:
Вы знали, что Юж. корейцы жуткие шопоголики?)) 🛒🛍️🧾
Lotte World Mall, примыкающий к башне, является одним из крупнейших торговых центров в Корее и предлагает огромный выбор товаров, включая продукцию корейских дизайнеров и брендов.
Место встречи и общения: Lotte World Tower стала популярным местом встреч и общения как для местных жителей, так и для туристов.
Хотя Lotte World Tower – это ультрасовременное здание, оно старается гармонично вписываться в культурный контекст Кореи, предлагая посетителям уникальную возможность познакомиться с разными гранями этой страны.
Если Вы ещё не были в Корее, обязательно посетите эту страну утренней свежести 🇰🇷
#Korea#seoul#lotte_world_tower#lotte#kim_chi_kim
Сеул это город контрастов, невероятно огромной энергии и масштабными политическими мероприятиями
Я приехала сюда не только любоваться архитектурой и есть корейское морожено (хотя и это тоже), но и чтобы оказаться ближе к мировому академическому сообществу.
Сейчас сижу в одном из местных кафе и погрузившись в атмосферу, захотелось поделиться чем всё-таки отличается ISA от IPSA?
🔹ISA (International Studies Association) — больше про международные отношения, конфликты, глобальные процессы.
🔹IPSA (International Political Science Association) — охватывает всю политологию: от политических теорий до выборов и институтов.
Обе ассоциации играют важную роль в формировании современной науки. А Сеул — идеальное место, чтобы об этом размышлять: живой, умный, и при этом очень красивый город.
Выкладываю видео, чтобы вы тоже прочувствовали атмосферу.
#Seoul#ISA#IPSA#академтуризм#политология#fieldnotes
Секрет вкусного Кимпаб!
Привет-Привет, дорогие 🤲🏽
Спешу выложить вкусный рецепт КИМПАБ с тофу/тунцом/индейкой!
Раскрываю Секрет!! 🤫👀🤫
Независимо от того, какую основную начинку Вы выберете (мясо, птицу, рыбу, краб, креветки и тд…) КИМПАБ получится вкусным ЕСЛИ👇🏽
Правильно приготовить и заправить рис ☝🏼
Если переварите рис 🍚 начинка Кимпаб получится жидкой, если не доварите рис 🍚 кимпаб получится сухим 😖
Поэтому можете экспериментировать с любой начинкой, главное отварите и заправьте правильно 🍚
Пошаговый рецепт приготовления кимпаб можете посмотреть в ролике и здесь 👇🏽👇🏽
https://t.me/kim_chi_kim/39
А как правильно приготовить рис, выложу в следующих постах 📝
Приятного аппетита 😋
#kim_chi_kim#Seoul#korea#вкусно#быстро#рецепты#kimpub#streetfood
⭐️ ОПУБЛИКОВАНЫ СПИСКИ участников культурных курсов
🥁 "Самульнори" 🎤 "Норебан"💃 "Муёнбан" 🕺 "К-рор" 🥋 Тхэквондо
❗️ Напоминаем, что согласно условиям, опубликованным на нашем сайте, заявки принимались только от учащихся (платных курсов) Школы текущего семестра.
🌐 Ознакомиться со списками можно на сайте (по каждому курсу отдельно): в разделе <Учебные и культурные курсы>
✅ Занятия начинаются уже на этой неделе
⛔️ Посещать занятия могут только учащиеся из списков.
📨 Участникам курсов были направлены письма на эл.почту, просьба ознакомиться.
#корея#сеул#корейскийязык#корейский#korea#seoul#kpop#bts
The first HACK-A-TON by The Open Network (TON) in South Korea has just started! 🔥
Super excited to be one of their main sponsors 🚀🫡
Pop by to meet up with us, or any rep from BoomLabs, Ozys, and TAV (The Open Network, Alphanonce, VistaLabs).
Address: B1, 126, Teheran-ro, Gangnam-gu, Seoul, Republic of Korea
주소: 서울 강남구 테헤란로 126 B1 수호아이오
KR page: https://lnkd.in/g9e-eDtb
EN page: https://lnkd.in/gpsPXMWG
#dwf#TheOpenNetwork#TON#Telegram#Hackathon#Seoul#Boomlabs#Ozys#TAV#Alphanonce#Vistalabs
📢 ЛЕТНИЕ КУРСЫ подготовки к тестированию TOPIK
🇰🇷 В нашем центре, в летний период будут открыты группы подготовки к сдаче тестирования TOPIK (I и II уровня). Это связано с тем, что этим летом - 10 июля, в Санкт-Петербурге пройдет сдача экзамена TOPIK.
✅ Будут открыты две группы:
1. Подготовка к тестированию TOPIK I (1-2 гып)
2. Подготовка к тестированию TOPIK II (3-6 гып)
💥 Условия обучения
- Онлайн формат обучения (через ZOOM)
- 8 недель обучения - с 14 мая по 02 июля
- Расписание: суббота с 13:00 до 14:40
- Стоимость: 8 000 рублей.
📍Условия поступления:
- Заявки будут рассматривать только после того, как их количество составит 10 и более;
- Поступить на курсы может любой желающий;
- Оплата производится после одобрения заявки, через платформу Дзен-класс;
- Прием заявок и оплаты СТРОГО до 12.05.2022.
🌐 Ссылки для подачи заявки опубликованы на нашем сайте: http://www.wonkwang.ru/receipt
❗ ВНИМАНИЕ
- Наш учебный центр не проводит экзамен TOPIK;
- Всю информацию по проведению тестирования TOPIK уточняйте в посольстве Республики Корея;
- Учебный центр не консультирует по вопросам подачи заявок на тестирование.
#корейскийязык#корея#школа#языки#лингвистика#хочувкорею#сеул#учукорейский#kpop#bts#exo#blackpink#korea#korean#seoul#topik