Установить свойства виджета в 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
🎉 Наградили выпускников "JS bootcamp. Deep Dive into React" 2023!
👨🎓 В этом потоке у нас 4 воронежских выпускника. На торжественное вручение смогли прийти Тимофей и Никита. Сертификаты им вручила наш Software Engineer и менеджер курса Мария Тихонова. Остальные фронтендеры получат свои сертификаты в электронном виде 👍
🌐 В этом году наш курс стал международным. Новый формат доступен в трех странах – Узбекистане, Португалии и России. По традиции программа была насыщенная: только практика и знания без воды. Также у каждого студента был персональный ментор.
👏 Поздравляем всех выпускников с успешным прохождением курса. Вы молодцы! Желаем вам дальнейших успехов в карьере! 📈
#dsr_training_center#JSbootcamp
🔥Последний шанс попасть на курс JS Bootcamp!
Успей подать заявкудо21 января, чтобы прокачать навыки во фронтенд разработке!
❗️Напоминаем: Онлайн-тестирование пройдет 24 января в 17:00. Завтра отправим письмо на почту с подробностями. Обязательно проверьте папку спам или напишите нам на [email protected], если не получите письмо.
#DSR_courses#dsr_training_center#JSBootcamp
👋 Знакомьтесь, Шохрух Тураев — наш Software Engineer (DSR Tashkent) и выпускник JS Bootcamp!
🧑🎓 Шохрух прошёл наш бесплатный курс и получил свою первую работу во фронтенд-разработке в DSR.
🎥 В ролике он поделился своим опытом обучения, и рассказал, почему он выбрал карьеру инженера. Видео на английском.
💻 Начните свой путь в IT — регистрация на курс еще идет!
❗️ Подать заявку.
#DSR_courses#dsr_training_center#JSBootcamp
👋Привет, фронтендеры! Ещё не зарегистрировались на JS Bootcamp?
👨💻 Ментор курса Александр Евстафиади, Senior Software Engineer, расскажет, чем наш курс отличается от остальных. Видео на английском.
Спойлер:
✅ Полностью бесплатный курс от инженеров мирового уровня
✅ Занятия на английском
✅ Персональное менторство 1:1
✅ Возможность претендовать на позицию Junior Front-End разработчика
✅ Цифровой сертификат по окончании
👉 Успей подать заявку.
❓FAQ по курсу.
#DSR_courses#dsr_training_center#JSBootcamp
🗓Делимся расписанием курса JS Bootcamp.
Показали все этапы: Q&A сессия, тестирование, интервью и старт обучения.
➡️ Ответы на вопросы по курсу тут.
⚡️Успейте зарегистрироваться!
#DSR_courses#dsr_training_center#JSBootcamp
ℹ️Расскажем все, что тебе нужно знать про наш бесплатный курс.
Листай карточки и скорее регистрируйся!
❓ Если остались вопросы — присоединяйся к нашей Q&A-сессии 15 января.
#DSR_courses#dsr_training_center#JSBootcamp
🚀Старт регистрации на бесплатный курс по фронтенду!
DSR запускает JS Bootcamp. Deep Dive into React — всего за 80 часов вы освоите навыки junior front-end разработчика.
Курс проходит в онлайн формате и предполагает личное менторство от наших инженеров.
Что вас ждёт:
✅ Прокачаете навыки до уровня junior front-end
✅ Освоите React «изнутри»
✅ Создадите свой первый рабочий веб-проект
✅ Получите сертификат, подтверждающий компетенции
❗️ Лекции на английском языке. Рекомендуемый уровень английского — B1 и выше.
➡️Подавайте заявку прямо сейчас! Количество мест ограничено.
#DSR#DSR_courses#dsr_training_center#JSBootcamp
👨🎓👩🎓 Собрали для вас полезные ресурсы в нашей традиционной рубрике #DSR_knows.
Эти материалы особенно пригодятся тем, кто хочет попасть на наш легендарный бесплатный курс по фронтенду JS Bootcamp. Deep Dive into React!
➡️ Сегодня - краткий обзор интерфейсных технологий:
💥Authentication
✅Sessions and cookies
✅Web Authentication Methods Explained
💥Tool
✅Git Tutorial for Beginners: Command-Line Fundamentals
💥HTML5, CSS
✅Learn HTML5 and CSS3 From Scratch
✅Flexbox
💥Javascript
✅Modern JavaScript Cheatsheet
✅The Modern Javascript Tutorial
💥Networking
✅How the Internet Works for Developers
✅An overview of HTTP
✅DNS Explained
✅REST API concepts and examples
⚡️Регистрация на курс еще идет!
❗️ Обучение будет проходить на английском языке.
#DSR_courses#dsr_training_center#JSBootcamp
‼️ Сегодня закрывается регистрация на курс JS Bootcamp: Deep Dive into React!
❗️Курс проходит на английском языке
🔗Успей подать заявку!
❓Пропустили презентацию курса?
▶️Ищите её в нашей группе Training Center (EN)
❗️Напоминаем: Вступительный экзамен состоится 17 февраля. Письмо с подробностями о тесте отправим завтра. Обязательно проверьте папку спам или напишите нам на [email protected], если не получите письмо.
#DSR_courses#JSBootcamp#JavaScript#dsr_training_center
Итоги года: Учебный центр DSR
Перед Новым годом мы подвели итоги работы Учебного центра DSR за 2023-2024 год. Вместе с командой обсудили достижения, поблагодарили наших менторов, подарили им памятными подарками и зарядились праздничным настроением. 🎁
💡Не без гордости хотим отметить, что:
• Наши курсы остаются бесплатными для всех.
• Уже два года обучение доступно не только в Воронеже, но и в Ташкенте и Порту (города, где работают наши офисы).
• Мы получили заявки от студентов из 28 стран!
Другие интересные цифры представлены в нашей инфографике.
🚀А наш учебный год в самом разгаре!
Совсем скоро стартует курс по фронтенду — JS Bootcamp. Deep Dive into React. Обучение будет проходить на английском, так что это отличная возможность не только улучшить навыки разработки, но и подтянуть язык.
🗓Узнайте больше и регистрируйтесь тут
#DSRTrainingCenter#ITEducation#JSBootcamp
Вы еще не устали отдыхать? 👨🎓👩🎓 Если хотите посвятить свободное время получению новых знаний, то вам поможет наша рубрика #DSR_knows.
➡️ ️ Сегодня - краткий обзор интерфейсных технологий:
💥Authentication
✅ Sessions and cookies - https://vk.cc/cqW5jA
✅ Web Authentication Methods Explained - https://vk.cc/cqW5mR
💥Tool
✅ Git Tutorial for Beginners: Command-Line Fundamentals - https://vk.cc/cqW5oP
💥HTML5, CSS
✅ Learn HTML5 and CSS3 From Scratch - https://vk.cc/cqW5vM
✅ Flexbox - https://vk.cc/cqW5xI
💥Javascript
✅ Modern JavaScript Cheatsheet - https://vk.cc/cqW5zC
✅ The Modern Javascript Tutorial - https://vk.cc/cqW5Dr
💥Networking
✅ How the Internet Works for Developers - https://vk.cc/cqW5Fo
✅ An overview of HTTP - https://vk.cc/cqW5HQ
✅ DNS Explained - https://vk.cc/cqW5K2
✅ REST API concepts and examples - https://vk.cc/cqW5O7
Эти знания пригодятся вам для поступления на наш бесплатный курс по фронтенду 'JS Bootcamp: Deep Dive into React'!
⚡️ Регистрация уже идет https://en.dsr-corporation.com/courses/jsbootcamp/
‼️Обучение будет проходить на английском языке.
#DSRTrainingCenter#ITEducation#JSBootcamp