Официальная реализация Flash, библиотека интерфейса Python, nicegui, удаляющая 90% кодов событий.
Официальная реализация Flash, библиотека интерфейса Python, nicegui, удаляющая 90% кодов событий.

Предисловие

«Простой в использовании, слабый в настройке. Сильный в настройке, с ним трудно начать». Это всегда было основным правилом библиотек интерфейса Python.

Как упоминалось в предыдущем уроке, nicegui на самом деле представляет собой очень обычную библиотеку интерфейсов, управляемых событиями, и в ее механизме работы нет ничего особенного. Хотя в него встроен простой механизм привязки данных, текущая реализация на самом деле не работает.

Однако когда nicegui объединяется с механизмом ответа на данные, все меняется к лучшему.

Это самая важная статья в последующих руководствах по nicegui. Сегодня на небольшом примере мы научимся использовать nicegui на основе данных. Для этого метода невозможно найти даже официальную документацию.

Сначала посмотрим на эффект:

На этот раз вам нужно установить эти библиотеки

Язык кода:javascript
копировать
pip install nicegui ex4nicegui pandas openpyxl pyecharts -U

создавать python файл кода main.py , напишите базовый код импорта и интерфейса


Синхронизация данных и интерфейсов

Начните с небольшого примера.

Интерфейс имеет поле ввода и метку. Надеемся, что после того, как пользователь введет контент, метка ниже будет отображаться одновременно:

Используйте официальный подход nicegui и используйте события:

  • Строка 12: ui.input Первый параметр — это просто заголовок поля ввода.
  • Строка 10: проводим объект управления из свойств,Получить или присвоить значение

Привяжите события к полю ввода и обработайте логику в функции событий. Кажется разумным.

Теперь давайте попробуем подход, ориентированный на данные:

  • Строка 7: используйте to_ref для создания одного адаптивного текста.
  • Строка 11: Обратите внимание: здесь не используется. nicegui официальный контроль, вместо этого используйте ex4nicegui из rxui создавать input элементы управления. Его параметры такие же, как nicegui из input Точно так же.
  • проходить value Параметры, вы можете установить входное содержимое поля ввода. но, Здесь передается адаптивный текст, определенный в строке 7. Другими словами, содержимое поля ввода теперь синхронно связано с этим адаптивным текстовым объектом.
  • ХОРОШО13:проходитьделатьиспользовать rxui создаем элемент управления меткой, первым параметром является метка содержимого. Передайте тот же Отзывчивый текст

Все очень просто: теперь содержимое поля ввода и содержимое метки синхронно связаны!

«И все? Эта отзывчивость так скучна!»


Теперь измените требования. Если содержимое поля ввода представляет собой значение цвета, одновременно изменится и цвет шрифта метки ниже. Демонстрация выглядит следующим образом:

Код очень прост:

  • Строка 13: Входной контент привязан к метке цвета. Это просто и интуитивно понятно.

Снова обновите требования. Теперь мы не хотим использовать текстовое содержимое напрямую, но если в конце входного содержимого есть значение цвета, окруженное скобками, установите цвет метки:

Код выглядит следующим образом:

  • Строки 10–19: определение функции.,Функция возвращает цветной текст, который в конечном итоге привязан к метке. Не много логики,Просто обычный python код обработки текста
  • Строка 9: Отметка для пользовательской функции ref_computed Декоратор, делающий функцию Отзывчивыйданный.
  • Строка 11: Здесь мы используем Линия 7 Определите изобразительный текст, который сам привязан к полю ввода. Обратите внимание, что все Отзывчивыйданный проводится имя переменной.значение Получите значение.
  • Поскольку функция использует input реактивное значение, поэтому эта функция автоматически работает с input ассоциация. когда input Когда значение изменяется (очевидно, можно изменить только поле ввода в интерфейсе), эта функция будет запущена, тем самым уведомляя элемент управления метки о необходимости обновления цвета.

Вы заметили, что кода привязки событий вообще нет? !

Нам нужно всего лишь освоить несколько моментов, чтобы использовать этот метод программирования интерфейса:

1. Найдите элементы управления взаимодействием с пользователем в интерфейсе и определите объект, реагирующий на чтение и запись (чтобы ref) и привяжите его к соответствующему элементу управления. Поле ввода в примере

2. Что-либо через переменные взаимодействия с пользователем (в примере input переменная) Полученные данные ответа определяют ответ, доступный только для чтения (см. computed) и привяжите его к нужному элементу управления. Цвет этикетки в примере

По сравнению с использованием кода «использоватьсобытие»,Отзывчивыйиз Код Интерфейс станет более лаконичным и интуитивно понятным. Мало того, в это время из Код Интерфейс полностью декларативен, поэтому имеет возможность «незакодировать». Например, функция перетаскивания макета

Не забудьте нажать три подряд. Ваши лайки, коллекции и внимание — мотивация моего творчества.


Настоящий бой

Теперь давайте начнем с первого демо-кейса.

Продолжая следовать идее, изложенной ранее, пользователь выбирает путь к файлу. Очевидно, нам нужны оперативные данные о пути к файлу:

  • Строка 11: Определите отзывчивую переменную, которую я хочу использовать. r_ префикс обозначает читабельность Отзывчивый объект
  • Строки 17–19: официального встроенного компонента выбора локального файла нет.,В репозитории github есть официальная реализация,Но он относительно сырой и не Отзывчивый. Это компонент, который я написал
  • Строка 23: Компонент локального файла,Не конкретный компонент дисплея,Поэтому необходимо настроитьиспользоватьэтоиз open Функцию можно открыть. Здесь мы используем кнопку, задаем настройки события щелчка
  • Строка 21: Объект компонента выбора файла Makeuse из bind_ref Вы можете связать его со значением результата

Я предпочитаю определять данные с помощью кода. интерфейсаразделен на два разныхиздокумент,Здесь для удобства объяснения,Поместите это прямо в файл

Теперь там одни кнопки и никаких особых эффектов не видно. Мы также завершили загрузку таблицы данных:

  • Строки 15–20: преобразование в фрейм данных в соответствии с выбранным путем к файлу.

проходить ref_computed Определенный реактивный объект только для чтения, мне нравится использовать cp префикс

Затем привяжите форму:

  • Строка 43: Использовать оригинал nicegui из Свернуть компонент
  • Версия 44: rxui.table.from_pandas Вы можете напрямую дать Отзывчивыйиз dataframe данные

Взгляните на эффект:

Следующий шаг — это, по сути, та же идея.

Определим переменные, с которыми пользователи могут взаимодействовать сразу:

Затем определите производные данные:

1. Имя столбца таблицы данных (имя строкового столбца)

2. диаграммаизданные. Потому что нам нужно составить сводную статистику на основе выбранных полей осей X и Y.

3. Создание объектов pyecharts

4. Чтобы скрыть элемент управления ниже, когда данные не загружены, определите «загружены ли данные».

Я не буду здесь раскрывать все коды, это всего лишь базовые коды обработки данных. Дело в том, что все эти коды являются обычными кодами обработки данных, и никакого кода, связанного с объектами-компонентами, не будет.

Если вы не понимаете некоторые части кода, сообщите мне об этом в комментариях.

Это означает, что мы можем проверить правильность логики, не создавая интерфейс. Я также создал несколько вспомогательных инструментов, таких как следующая информационная таблица, в которой перечислены все переменные реактивных данных:

Из таблицы вы можете увидеть, с какими переменными связана каждая переменная. Вы можете увидеть их динамические изменения данных. В настоящее время эта форма относительно проста и будет усовершенствована позже.

Следующий,Сосредоточьтесь на части диаграммы,Посмотрите, как можно легко создавать диаграммы.


диаграмма

nicegui Официальная составляющая издиаграммы: highcharts , но я знаю, что многие друзья любят его использовать pyecharts , поэтому я специально сделал echarts компоненты.

Хотя лично мне не нравится использовать pyecharts, их легко поддерживать. Теперь посмотрим, как его использовать.

cp_echart_options в конечном итоге будет привязан к компоненту интерфейса rxui.echarts.from_pyecharts

Логика внутри очень проста, поскольку эта функция возвращает pyecharts издиаграммы объекта достаточно. Разверните строку 61 на изображении выше. код:

  • ХОРОШО65:проходить Отзывчивыйпеременная.valueПолучите, а затем установите pyecharts параметры функции. Необходимо обратить внимание на useuse .value Получите ценность

я не знаком с pyecharts ,Два диаграммных кода,Все они взяты прямо с официального сайта.,Взгляните на код официального сайта:

Когда мы его используем, нам нужно изменить последнее предложение .render Просто удалите его. Поскольку этот код будет напрямую генерировать html файл, который невозможно правильно использовать в nicegui середина.


По сути, электронные диаграммы Компонент требует, чтобы это был словарь конфигурации диаграммы, например, в echarts На официальном сайте наугад найдите диаграмму:

  • соответствуютиз Конфигурациякопировать到 python в, для каждого key Добавьте кавычки (вы также можете использовать некоторые онлайн-инструменты для конвертации)
  • Строка 25: в словаре,Вы можете поместить переменную Отзывчивый по своему желанию.
  • Строка 59: Используйте lazy_input получатьиз Поле ввода,После изменения содержимого,Нажмите только клавишу Enter или фокус, чтобы выйти из поля ввода.,вызовет изменение значений

На этом этапе вы можете получить такой эффект:


Код интерфейса

Данные четко определены, а код интерфейса на самом деле очень краток:

  • По сути, это просто код стилей и привязок.
boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose