TGTGInsighttelegram intelligenceLIVE / telegram public index
← Python Заметки

TGINSIGHT SIMILAR POSTS

Најди сличен содржај

Изворен канал @pythonotes · Post #381 · 23 окт.

Установить свойства виджета в 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

Hashtags

Резултати

Пронајдени 105 слични објави

Пребарај: #compose

当前筛选 #compose清除筛选
Android Broadcast

@android_broadcast · Post #9948 · 06.04.2026 г., 18:22

HotSwan - быстрое обновление Composable на реальном устройстве. Доступно как плагин для Android Studio Я выбрал другой путь - делаю СMP проект с поддержкой Android + Desktop JVM и так можно быстро проверять + делать код чище. #Compose

Hashtags

Android Broadcast

@android_broadcast · Post #9688 · 24.11.2025 г., 06:11

⚙️ Команда Compose добилась плавности скрола как в View на Android. Источник тут #compose

Hashtags

Android Broadcast

@android_broadcast · Post #9517 · 19.09.2025 г., 06:02

⚙️ Нашел сайт с демонстрацией того как происходит рекомпозиция с примером хороших и плохих практик Как была сделана реализация написали в статье, а исходники есть на GitHub #compose

Hashtags

Android Broadcast

@android_broadcast · Post #9229 · 03.06.2025 г., 11:37

Серия статей с разборами лучших практик для Jetpack Compose: 1️⃣5 Core Optimizations Every Developer Should Know (EN, 5м, альт. ссылка) 2️⃣5 Advanced Techniques for Ultra-Smooth Apps (EN, 8м, альт. ссылка) 3️⃣The Expert’s Toolkit (EN, 8м, альт. ссылка) 4️⃣Runtime Mastery & Fine-Tuning (EN, 8м, альт. ссылка) #compose

Hashtags

Android Broadcast

@android_broadcast · Post #9138 · 16.05.2025 г., 03:43

⚙️ Нужно ли проставлять аннотации @Stable и @Immutable сразу при написании кода? 🤔 Мой ответ — НЕТ! Не стоит заниматься преждевременной оптимизацией. Пишите UI без оглядки на аннотации стабильности, а затем используйте инструменты анализа, чтобы определить, где действительно возникают лишние рекомпозиции и есть смысл оптимизировать типы. Как анализировать рекомпозиции и пропуски? 👉 Используйте Layout Inspector в Android Studio (подробнее — в этом посте) 👉 Включайте отслеживание работы composable-функций в System Trace 👉 Можно воспользоваться библиотекой Compose Investigator, чтобы получать детальные логи по рекомпозициям ‼️Важный нюанс: Если вы используете типы из внешних библиотек или из модулей, где не подключён Compose Compiler, такие типы всегда считаются Unstable. Это может приводить к лишним рекомпозициям. 🚀Strong Skipping Mode действительно упростил жизнь разработчикам, но старайтесь передавать в параметры Сomposable-функций только Stable или Immutable типы. Это позволит максимально эффективно использовать skipping и сделать UI более производительным. #compose

Hashtags

Android Broadcast

@android_broadcast · Post #9129 · 14.05.2025 г., 15:44

Вышел Coil 3.2.0 Что нового ⬆️ Обновление Kotlin, Compose, Okio, Skiko, Coroutines и др зависимостей до актуальных версий 🛠 Исправление багов 👉 Compose артефакты требуют Java 11 и выше из-за перехода на Compose 1.8.0 #compose

Hashtags

Android Broadcast

@android_broadcast · Post #9720 · 04.12.2025 г., 07:35

⚙️Вышел Jetpack Compose 1.10.0 👉 Стабильное API Shared Transition 👉 Оптимизированный скролл 👉 Новые подходы к сохранению данных при пересоздании Activity через ViewModel 🚀 Повышена производительность UI на Compose 🛠 Исправлено багов и шероховатостей Изменений действительно много — в один пост всё не поместить. Буду разбирать ключевые обновления по отдельности в следующих публикациях на @compose_broadcast✨ #compose#android

Android Broadcast

@android_broadcast · Post #9430 · 20.08.2025 г., 12:55

🤖 Как использовать Compose, чтобы сделать анимированный Splash Screen Разработчик создал библиотеку androidx-splashscreen-compose (не от Google решение), которая позволяет делать красивую анимацию как на анимашке. Подробный разбор и реализация есть в статье (EN,6м, альт. ссылка) или 🐱исходниках на GitHub #android#compose

Android Broadcast

@android_broadcast · Post #9412 · 14.08.2025 г., 07:17

⚙️Вышел Jetpack Compose 1.9 Stable (августа 2025) Главные новинки: 👉 Тени нового поколения — dropShadow() и innerShadow() дают больше контроля, чем классический shadow(). 👉 LazyLayout — новый API предзагрузки и кэширования элементов для более плавного скролла. 👉 2D-прокрутка — Scrollable2D для таблиц, карт и больших изображений. 👉 Расширенный stack trace — имена composable и их позиции для отладки в stacktrace (только в debug). 👉 Новые аннотации — @RememberInComposition, @FrequentlyChangingValue и перенос @Stable в отдельный модуль. Подробнее буду рассказывать в @compose_broadcast. Подписывайтесь! #compose#android

Android Broadcast

@android_broadcast · Post #9233 · 05.06.2025 г., 08:54

📹Mastering text input in Compose (EN, 18м) Google выпустили шикарное видео, где показали лучшие практики работы с текстовыми полями в Compose — с примерами, API и лайфхаками. В ролике разработчики на примере рассказывают: 👉 как использовать state-based TextField — новый подход к управлению вводом; 👉 зачем нужен SecureTextField и как задать требования к паролю; 👉 как работает Autofill API (да, теперь можно сохранять логины и OTP); 👉 как кастомизировать поле ввода OTP с помощью BasicTextField и decorator; 👉 как принимать GIF и изображения через drag & drop с новым contentReceiver; 👉 как использовать input/output трансформации для автоподстановки скобок и тире в номерах; #android#compose

Android Broadcast

@android_broadcast · Post #9003 · 24.04.2025 г., 09:06

⚙️ Вышел Jetpack Compose 1.8.0 Все новинки расскажу отдельными постами в @compose_broadcast, а именно: 👉 Autofill 👉 ресайзинг текста под контейне 👉 новое API для отслеживания Composable на экране 👉 анминирование границ Composable 👉 стабилизация API (убрали экспериментальные аннотации) 👉 ContextualFlowRow и ContextualFlowColumn теперь deprecated, им на замену используйте FlowRow и FlowColumn 👉 диалоги теперь учитывают режим экрана edge-to-edge 👉 упростили тестирование ClickableText 👉 появилась возможность кастомизации overscroll Свежий BOM для новых версий implementation(platform("androidx.compose:compose-bom:2025.04.01")) #compose#android

Android Broadcast

@android_broadcast · Post #8883 · 30.03.2025 г., 15:30

⚙️Как работать с Custom Layout в Jetpack Compose (21м) В этой статье вы найдете: 👉 как работают layout-ы в Compose; 👉 изменение layout-а отдельного компонента; 👉 создание кастомных Layout и LazyLayout; 👉 отложенную композицию. Всё это на примерах, в том числе из дизайн-системы Авито. #compose#android

123•••89
ПретходнаСтраница 1 од 9Следна