Пример создание программу Eel Python

Eel — это библиотека Python, которая позволяет создавать графические интерфейсы пользователями, используя веб-технологии, такие как HTML, CSS и JavaScript. Eel работает путем запуска веб-сервера и отображения веб-страниц в окне браузера (например, с помощью Chrome). В этой статье мы рассмотрим создание простой программы с использованием Eel.

Установка Eel

pip install Eel requests

Для начала установим библиотеку Eel. Это можно сделать с помощью pip:

Создание HTML файла

В каталоге www создадим файл index.html, который будет нашим основным интерфейсом:
<!doctype html>
<html lang="ru">
<head>
	<meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
	<title>Геодата</title>
	<link href="source/bootstrap/bootstrap.min.css" rel="stylesheet">
	<link href="source/fontawesome/css/all.min.css" rel="stylesheet">
	<link rel="icon" href="source/favicon.png">
	<style>
	a.link:link {
		color: #007FFF;
		text-decoration: none;
	}
	a.link:hover {
		color: #E74E14;
		text-decoration: underline;
	}
	a.link:active {
		color: #007FFF;
		text-decoration: none;
	}
	</style>
</head>
<body>

<div class="container-fluid mt-3">
	<div class="mb-3">
		<label class="form-label">IP-адрес</label>
		<input type="text" class="form-control" name="ip" id="ip" placeholder="IP-адрес...">
		<div class="form-text" id="links">
			<a href="#" class="link">216.58.211.227</a> - google,
			<a href="#" class="link">77.88.44.55</a> - yandex,
			<a href="#" class="link">204.79.197.200</a> - bing
		</div>
	</div>
	<button type="button" class="btn btn-primary" id="button">
		<span id="loading1" style="display: none"><span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span> Загрузка...</span>
		<span id="loading2"><i class="fa-solid fa-location-dot"></i> Получить</span>
	</button>
	<div class="card mt-3"><div class="card-body p-2" id="result">Результат...</div></div>
</div>

<script src="source/jquery.min.js"></script>
<script src="source/bootstrap/bootstrap.bundle.min.js"></script>
<script src="/eel.js"></script>
<script>
$(document).ready(function(){
	$('#button').click(function(){
		var ip = $('#ip').val();
		var _this = $(this);
		$('#loading1').show();
		$('#loading2').hide();
		_this.prop('disabled', true);
		$('#result').html('<div class="spinner-border" role="status"><span class="visually-hidden"></span></div>');
		eel.getInfo(ip)(function(output){
			$('#result').html(output)
			$('#loading1').hide();
			$('#loading2').show();
			_this.prop('disabled', false);
		});
	});
	
	$('#links a').click(function(){
		var ip = $(this).text();
		$('#ip').val(ip);
	});
});
</script>

</body>
</html>

Создание Python файла

В корневом каталоге проекта создадим файл main.py, который будет содержать основной код на Python:
import eel, os, requests

# pip install Eel requests
# Fix "No module named 'bottle.ext.websocket'": %LOCALAPPDATA%\Programs\Python\Python312\Lib\site-packages\eel\__init__.py
# Изменить этот bottle.ext.websocket на bottle_websocket

current_dir = os.getcwd() + os.sep
eel.init(current_dir + 'www')

def geodata(ip=''):
    if ip:
        public_ip = '/' + ip
    else:
        public_ip = ''
    r = requests.get(f'http://ip-api.com/json{public_ip}?fields=66846719&lang=ru')
    return r.json()

@eel.expose
def getInfo(ip):
    data = geodata(ip)
    result = 'Континент: ' + data['continent'] + ' [' + data['continentCode'] + ']
' result += 'Страна: ' + data['country'] + ' [' + data['countryCode'] + ']
' result += 'Регион: ' + data['regionName'] + '
' result += 'Город: ' + data['city'] + '
' result += 'IP-адрес: ' + data['query'] + '
' result += 'Широта: ' + str(data['lat']) + '
' result += 'Долгота: ' + str(data['lon']) + '
' result += 'Часовой пояс: ' + data['timezone'] + '
' result += 'Валюта: ' + data['currency'] + '
' result += 'Провайдер: ' + data['as'] + ' [' + data['asname'] + ']
' return result eel.start('index.html', size=(700, 510), position=(100, 100), host='localhost', port=8080)

Запуск программы

Теперь, когда все файлы созданы, мы можем запустить программу, выполнив команду:
py main.py

Заключение

В этом примере мы создали простую программу с использованием Eel, которая демонстрирует взаимодействие между Python и JavaScript. Eel позволяет легко создавать мощные и кросс-платформенные графические интерфейсы, используя знакомые веб-технологии.
Поделится:
*текст* - жирный, ~текст~ - курсивный, -текст- - зачеркнутый, _текст_ - подчеркнутый
IP-адрес: 3.135.213.116
Часовой пояс: Asia/Almaty
Подробнее

Сервисы

Страницы

Информация