Python eel, JS, Html
Я делаю графической интерфейс для программы на python с помощу eel. Как сделать так чтобы по нажатию на кнопку в html странице выводились данные указанные в python? Вот пример:
import eel eel.init("web") @eel.expose def get_upp(place): text = "start" return text eel.start('index.html', size=(700, 700))
Document Start
Мне нужно чтобы текст с пайтона выводился в тег по нажатию кнопки
Отслеживать
19.8k 6 6 золотых знаков 22 22 серебряных знака 56 56 бронзовых знаков
задан 6 мар 2021 в 19:58
33 3 3 бронзовых знака
Подскажите пожалуйста, EEL может формировать графический интерфейс как tkinter например, если для облегчения из линукса выброшены службы рабочего стола? То есть без сторонней помощи формировать картинку для видеобуфера? И работать без наличия в системе браузеров?
10 фев в 13:40
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Когда при выполнении кода открывается окно браузера, нажмите CTRL + SHIFT + I , чтобы открыть консоль, где можно поймать значительную часть ошибок JS.
- https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js такой версии jQuery не существует, можно изменить, например, на 3.3.1
- ell.get_upp(place)(); Во-первых eel , во-вторых, ReferenceError: place is not defined , переменная не объявлена. Нужно заранее дать ей необходимое значение.
test.py
import eel eel.init("web") @eel.expose def get_upp(place): text = "start" return (text, place) # просто убедиться, что параметр тоже работает. eel.start('index.html', size=(700, 700))
web/index.html (кусок JS тоже можно бы вынести в отдельный файл)
Document
* Дополнительно обращаю внимание читателя, не знакомого с eel : предполагается, что рядом с файлом test.py лежит папка web , внутри неё: index.html
Eel в Python – библиотека для красивого интерфейса
В этом руководстве мы обсудим использование библиотеки Eel в языке программирования Python для разработки красивого пользовательского интерфейса для программ Python с помощью HTML, CSS и JavaScript.
Мы разделили руководство на два раздела. Первый раздел основан на фундаментальной теории библиотеки Eel в Python. В другом разделе мы покажем реализацию библиотеки , создав простое приложение, которое принимает два целых числа в качестве входных данных от пользователя и возвращает их сумму.
Что такое Eel в Python?
Eel в Python – это небольшая библиотека на языке программирования Python, которая позволяет программистам создавать простые электронные приложения с автономным графическим интерфейсом пользователя (GUI) на основе HTML и JavaScript с полным доступом к возможностям и библиотекам Python.
Eel может размещать локальный веб-сервер, а затем позволяет программистам аннотировать методы и функции в Python, чтобы мы могли вызывать их из JavaScript и наоборот. Эта библиотека разработана для того, чтобы избавить вас от неудобств при написании простых и коротких приложений с графическим интерфейсом.
Рассмотрим рисунок, изображающий концепцию Eel.

Файлы HTML, CSS и JavaScript хранятся в одном каталоге и инициализируются с помощью программы python. Файл JS обеспечивает соединение между HTML-страницей и Python с помощью функций, активируемых событиями onclick с HTML-страницы.
Реализация библиотеки
В следующем разделе рассматривается создание простого приложения с помощью библиотеки Eel в демонстрационных целях. Идея приложения заключается в том, что программа принимает два числа со страницы HTML, складывает их в Python и показывает результат пользователю.
Но прежде чем мы начнем создавать приложение, давайте установим библиотеку Eel.
Мы будем использовать установщик pip. Синтаксис установки показан ниже:
$pip install eel
Далее мы будем использовать код Visual Studio для создания этого проекта. Мы создали папку с именем «Web_test». В этой папке мы создали другую папку с именем «myWeb». В этой папке будут храниться следующие файлы:
Для страницы HML мы создадим три текстовые области и кнопку. Давайте рассмотрим следующий фрагмент кода для того же.
В приведенном выше фрагменте кода мы создали HTML-страницу, на которой мы определили три текстовые области с разными идентификаторами. ‘Int1’ и ‘int2’ предназначены для получения ввода от пользователя, а текстовая область ‘res’ предназначена для отображения результата. Кнопка с имеет прикрепленную к ней функцию onclick, определенную в файле JS.
Теперь давайте рассмотрим фрагмент кода для файла JS.
document.querySelector(«button»).onclick = function summation() < var data_1 = document.getElementById("int1").value var data_2 = document.getElementById("int2").value eel.add(data_1, data_2)(call_Back) >function call_Back(output)
В приведенном выше фрагменте кода мы определили функцию как summing(), которая активируется посредством события onclick. Внутри функции мы получили значения int1 и int2 и передали их функции sum, которая будет определена в файле Python. Функция call_Back() принимает «output» в качестве аргумента, возвращаемого методом Python с именем «sum».
Этот «вывод» возвращается в текстовой области с идентификатором «res».
Теперь давайте рассмотрим фрагмент кода для файла Python.
# importing the eel library import eel # initializing the application eel.init("myWeb") # using the eel.expose command @eel.expose # defining the function for addition of two numbers def add(data_1, data_2): int1 = int(data_1) int2 = int(data_2) output = int1 + int2 return output # starting the application eel.start("myWebpage.html")
В приведенном выше фрагменте кода мы импортировали библиотеку eel и инициализировали приложение с помощью команды eel.init («имя папки»), где мы назначили «myweb» в качестве имени папки.
Затем мы использовали команду eel.expose, в которой мы определили функцию «add», которая добавит «data_1» к «data_2» и вернет результирующее значение как «output». Значение, хранящееся в «output», выбирается функцией «call_Back» в файле JS и помещается на веб-страницу HTML.
Затем мы инициализировали приложение с помощью команды eel.start (“html filename”), указав имя файла как “myWebpage.html”.
Теперь давайте сохраним файл python и выполним его, используя следующий синтаксис, чтобы увидеть результат.
$ python my_sum.py
На следующем рисунке показан разработанный пользовательский интерфейс.

По умолчанию библиотека Python Eel использует веб-браузер Google Chrome для запуска приложения; однако мы также можем упомянуть браузер с помощью опции «режим». Наряду с «режимом» есть несколько других доступных вариантов приложения, таких как «положение», «размер», «геометрия» и многие другие, которые передаются внутри команды eel.start().
Заключение
В приведенном выше руководстве мы обсудили библиотеку Eel и ее использование в Python. Мы узнали, что эта библиотека помогает программистам создавать автономные приложения на основе HTML и JavaScript.
С помощью библиотеки Eel мы получаем возможности Python, включая свободу разработки пользовательского интерфейса с помощью HTML, а также CSS. Хотя по популярности Eel уступает своему главному конкуренту Electron; однако есть много программистов, чей первый выбор – Eel для создания простых приложений с графическим интерфейсом пользователя(GUI).
Вопросы с меткой [eel]
Библиотека EEL eel.init(«web») eel.start(«/login.html») В первом приложении запустил сервер и открыл страницу «login.html», второе приложение будет писать лог на этой же .
задан 5 мар 2022 в 18:49
79 показов
ошибка при компеляции pyinstaller eel
Раньше при компиляции скрипта при помощь pyinstaller все было хорошо. Запускаю так python -m eel stat1.py web —onefile —noconsole Теперь получаю вот такую ошибку. В чем может быть проблема? Раньше .
задан 27 окт 2021 в 6:35
97 показов
Как транслировать запись с вебкамеры через OpenCV cv2 в GUI Python EEL на HTML
у меня есть код OpenCV который работает через терминал и снимает через вебкамеру. Мне нужно сделать что бы это работало в приложении GUI EEL Python Соответственно там используется JS для работы .
задан 12 окт 2021 в 9:23
Почему в окне приложения не выводится DEUS VULT?
уважаемые пользователи Stack Overflow. Вследствие просмотра видеоролика, у меня возник вопрос. Почему в окне не написано DEUS VULT? Дело в том, что я переписал код из видео, несколько редактировав его .
задан 4 ноя 2020 в 10:23
647 показов
Как передать данные из python в js?
Есть самый простой код, работающий на eel. В данном коде js получает данные из input и передаёт их в python, после чего python их выводит в cmd. Но мне надо передать эти данные в js и вывести во .
задан 2 окт 2020 в 5:38
68 показов
Почему VS Code нормально не запускает eel?
Есть самый простой код, запускающий страницу в виде программы с помощью eel. Но вот такая незадача, VS Code когда запускает программу не запускает страницу. То есть, мне пишет Error 404, но если я .
задан 1 окт 2020 в 10:02
158 показов
pyinstaller + eel . Не запускается файл
Написал код на питоне с использованием eel. Скомпилировал через pyinstaller. Не запустился. Указал —debug all. Всё шло, но возникла ошибка, что нет какого-то файла ‘-‘. Как это исправить?
задан 13 сен 2020 в 9:28
27 показов
Ошибки при запуске html с помощью eel
Написал небольшую веб-страничку для отслеживания погоды. html, css, js и логика на python. Запускать это всё через отдельный файл с кодом: import eel from middle_weather import * if __name__ == ‘.
задан 12 дек 2023 в 0:21
Ошибка при запуске конвертированного exe файла
Я написал программу на pyhton с использованием web интерфейса( я использовал библиотеку Eel). И решил конвертировать его в exe файл, но после запуска выскакивает ошибка: Traceback (most recent call .
задан 9 дек 2023 в 12:36
28 показов
ошибка при запуске кода Python (Делал веб дизайн для приложения в python)
Traceback (most recent call last): File «C:\Users\chinu\Desktop\main.py», line 9, in eel.start(«main.html»,port = 0, size = (400, 600), mode = ‘custom’) File &.
задан 11 сен 2023 в 22:08
17 показов
Как получить ссылку на страницу eel
Хочу создать tg бота с веб интерфейсом, думаю использовать библиотеку eel, хочу что бы страница открывалась по нажатию кнопки в боте, возможно ли сделать такое, если да то как, если нет то какую .
задан 19 авг 2023 в 10:08
Ошибка импорта библиотеки nuitka
Объясню, написал софт, который использует eel в качестве интерфейса, пытался скомпилировать следующими командами: nuitka —standalone —onefile —show-progress —show-modules —remove-output —enable-.
задан 22 июн 2023 в 20:44
Как обновить html-страницу открытую через eel?
Есть веб-интерфейс дружно работающий с модернизацией с помощью Js, Python. В интерфейсе есть , через который я передаю и обрабатываю информацию. Ищу способ, метод при определённой команде .
задан 16 июн 2023 в 9:42
17 показов
Как достать данные из и направить в python.EEL
* < font-family: 'Oswald', sans-serif; >body< background: #c21500; /* fallback for old browsers */ background: -webkit-linear-gradient(to right, #ffc500, #c21500); /* Chrome 10-25, .
задан 10 июн 2023 в 16:44
55 показов
Как сделать, чтобы bot.run() работало вместе с eel.start()
Есть код: import eel import disnake from disnake.ext import commands GUILD_ID = *** CHANNEL_ID = *** TOKEN = ‘***’ bot = commands.Bot(command_prefix=’$$’, help_command=None, intents=disnake.Intents.
Python & EEL. Делаем просто на Python’е и красиво на JS
Это больше похоже на обычное десктопное приложение, где пользователь выполняет роль и клиента и сервера (но при этом полноценно используется html, css и js для графики, а не фреймворки). Но главный плюс такого подхода, что вы можете легко отделить графическую часть от логики приложения. То есть, вы можете написать приложением таким образом, как в статье, но при желании затем разъединить логику python кода от html, css, js, тогда у вас получится полноценное веб-приложение. И по итогу вам не надо будет мучаться, чтобы переписывать код клиента или сервера, так как можно будет заменить вызов функций, обернутых @eel.expose на вызов API.
Комментарий пока не оценивали 0
Ответить Добавить в закладки Ещё
Показать предыдущий комментарий
Интересно, по сути это получается веб-приложение, но без веб-сервера?
Eel запускает локальный веб-сервер (по умолчанию на localhost:8000) и открывает Chrome с флагом —app, позволяющий задавать размер окна и чтобы это выглядело как обычное приложение. А потом через свой же веб-сервер позволяет функциям из javascript обмениваться данными с функциями на python. И наоборот. Внутри это все сделано на вебсокетах. Из-за этого есть минус, что все такие функции асинхронные. Впрочем, в javascript это можно обойти через await, а на питоне еще проще.
Самое интересное, что в качестве браузера можно использовать не только Chrome, но и встроенный в Windows 10 Edge, а всю программу с помощью PyInstaller запаковать в один .exe. В итоге получается автономная программа, которая будет работать на любом Windows 10, не требуя установленного Python.
Подробное и довольно понятное описание, как это все работает, есть на страничке этой библиотеки: https://github.com/ChrisKnott/Eel
Всего голосов 1: ↑1 и ↓0 +1
Ответить Добавить в закладки Ещё
НЛО прилетело и опубликовало эту надпись здесь
Показать предыдущий комментарий
Да, похоже. Таких гибридов «javascript + что-то для доступа к системе» уже полно) HTA, Electron, NW.js (бывший Node-Webkit). Даже для питона, помимо EEL, есть CEF Python.
Для тех кто не понял, зачем это нужно, поясню. С помощью таких инструментов из браузерного javascript можно вызывать функции python для доступа к дискам и остальным функциям системы. В Electron и NW это сделано с помощью Node.js. Там это органично переплелось, потому что оба работают на javascript. Что и обеспечило такой связке большую популярность. Браузер для отображения интерфейса, а Node.js для всего остального, что недоступно из браузерного javascript. Доступ к файлам и т.д.
К преимуществам EEL можно отнести то, что не только из браузерного javascript можно вызывать сложные расчеты на питоне (numpy, scipy, нейронные сети на Tensorflow/Pytorch), но и из питона можно вызывать браузерные функции. Что позволяет из питона использовать браузер для визуализации данных крутыми javascript библиотеками, вроде D3.js, Three.js.
Ну а недостаток, что для каждой функции, которую хотите вызвать из другого языка (из python в javascript или наоборот), надо создавать шаблон, как описано в документации к EEL.