Рубрики
Без рубрики

Создание современного GUI для вашего приложения Python

В этом посте мы будем использовать библиотеку, которая позволит нам создать выдающийся графический пользователь … Помечено Python, EEL, HTML, JavaScript.

Приложение Python с EEL (3 серии деталей)

В этом посте мы будем использовать библиотеку, которая позволит нам создавать выдающиеся графические пользовательские интерфейсы (GUI) для наших повседневных сценариев Python.

У нас есть куча вариантов для создания GUI на Python, Tkinter, Wxpython, Pysimplegui, среди прочего. Tkinter действительно надежный и позволит нам иметь перекрестные приложения, однако, GUI на основе Tkinter не так красиво, как то, что мы можем, как правило, находить с веб-приложениями, а также другие прохладные приложения на основе электрона.

EEL – это библиотека, которая позволяет нам воспользоваться веб-технологиями, такими как HTML, CSS, JS и, конечно, все куча веб-каркасов там, как бутстрап, jQuery, прохладные библиотеки построения в качестве зарубежья и т. Д.

Библиотека EEL Позвольте нам легко использовать HTML, CSS и JS для создания нашего пользовательского интерфейса, не теряя всех наших мощных возможностей Python. EEL полагается на кучу библиотек Python, он просто создает локальный веб-сервер и открывает браузер (по умолчанию Chrome), браузер отображает HTML, CSS и JS, а Python контролирует большую часть логики.

Прохладная вещь с EEL, это позволяет нам запустить функции Python от JavaScript и ViceVersa, таким образом, мы можем обменять информацию и иметь лучшие из обоих миров (Python и JS).

Чтобы установить библиотеку EEL, вы можете сделать это из Pypi AS:

pip install eel

Настоятельно рекомендуется создать виртуальную среду сначала.

Мы должны сначала создать структуру нашей папки, наша корневая папка будет «приложением». Внутри мы создадим наш сценарий Python, который я решил позвонить App.py.

Чтобы улучшить структуру нашего кода, мы создали подпапку с именем «Web», который содержит файл index.html и две подпапки для наших файлов CSS и JS.

application
│   app.py
│
└───web
    │   index.html
    │
    ├───css
    │       main.css
    │
    └───js
            main.js

Для этого поста мы построим верхнее меню, напоминающее меню файлов для настольных приложений, используя предварительно построенный код из W3Schools Отказ Во-первых, мы должны редактировать свой HTML-файл:

Как видите, вы сможете создать весь ваш графический интерфейс, используя HTML, мы просто должны добавить Этот скрипт позволит нам вызвать наши открытые функции Python.

Для CSS-файла:

/* Add a black background color to the top navigation */
.topnav {
    background-color: #333;
    overflow: hidden;
  }

  /* Style the links inside the navigation bar */
  .topnav a {
    float: left;
    color: #f2f2f2;
    text-align: center;
    padding: 14px 16px;
    text-decoration: none;
    font-size: 17px;
  }

  /* Change the color of links on hover */
  .topnav a:hover {
    background-color: #ddd;
    color: black;
  }

  /* Add a color to the active/current link */
  /* .topnav a.active {
    background-color: #4CAF50;
    color: white;
  } */

И, наконец, для файла JS, мы просто добавляем слушателей событий на четыре кнопки на Navbar. Как видите, все они называют некоторые функции, но начинаются с EEL, например. ELL.GET_RANDOM_NAME (), это функция Python, таким образом, когда мы нажимаем кнопку, она позвонит функции Python. Кроме того, у нас есть функция js под названием inmapt_alerts, и у него есть декоратор eel.expose, это позволяет нам запустить эту функцию JS из Python:

document.getElementById("button-name").addEventListener("click", ()=>{eel.get_random_name()}, false);
document.getElementById("button-number").addEventListener("click", ()=>{eel.get_random_number()}, false);
document.getElementById("button-date").addEventListener("click", ()=>{eel.get_date()}, false);
document.getElementById("button-ip").addEventListener("click", ()=>{eel.get_ip()}, false);

eel.expose(prompt_alerts);
function prompt_alerts(description) {
  alert(description);
}

Теперь мы завершили наш графический интерфейс пользователя, теперь мы должны создать наш файл Python. Мы должны импортировать библиотеку EEL, а все остальные библиотеки, которые вам нужны для вашего проекта, в данном случае, случайное и дате времени.

import eel
import random
from datetime import datetime

eel.init('web')

@eel.expose
def get_random_name():
    eel.prompt_alerts('Random name')

@eel.expose
def get_random_number():
    eel.prompt_alerts(random.randint(1, 100))

@eel.expose
def get_date():
    eel.prompt_alerts(datetime.now().strftime("%d/%m/%Y %H:%M:%S"))

@eel.expose
def get_ip():
    eel.prompt_alerts('127.0.0.1')

eel.start('index.html')

Затем мы должны добавить нашу линию EEL.init, это инициализируйте библиотеку EEL, к определенной папке. Затем мы создаем наши четыре функции, которые мы хотим позвонить из JS, поэтому мы добавили декоратор @ Eel.expose Отказ Как вы можете видеть, каждый звонит нашу функцию JS Prompt_Alerts и прохождение строкового аргумента.

eel.start Запустит приложение, в этом примере есть много аргументов, которые можно пропустить, в этом примере мы используем минимальные аргументы, мы просто устанавливаем файл HTML для отображения (относительно веб-папки).

Теперь, когда мы завершили наш код, мы можем начать наше приложение:

Python App.py.

Должно появиться новое окно, как показано на следующем рисунке:

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

Теперь вы можете создать выдающуюся GUI для вас Python, в нашей следующей серии мы создадим сложный пример и рассмотрим другие аргументы, которые могут быть переданы в EEL.Start.

Приложение Python с EEL (3 серии деталей)

Оригинал: “https://dev.to/kodark/creating-a-modern-gui-for-your-python-application-2mlp”