Есть много разных способов создать графический интерфейс (интерфейс) на Python, но одно из моих любимых приложений - Streamlit! Он позволяет создавать веб-приложения, практически не используя ничего, кроме Python, приложения обладают множеством функций с современными визуальными эффектами, так что приступим!

Установка

Во-первых, нам нужно будет установить Streamlit, для этого мы можем использовать pip install, если у вас нет pip, прочтите эту статью, которую я написал, в которой показано, как его установить. запустите следующую команду внутри терминала / командной строки:

pip install streamlit

Отлично, после установки мы готовы к работе!

Давайте создадим графический интерфейс!

Прежде чем создавать графический интерфейс, позвольте мне разбить процесс:

Сначала мы создаем приложение на Python. ›Затем мы выполняем код с помощью функции streamlits в нашем терминале / командной строке.› Затем наш веб-браузер откроет приложение Streamlit.

Для начала давайте откроем пустой скрипт Python, который streamlit упоминает в своем начальном руководстве «first_app.py», но вы можете назвать его как хотите, а затем мы хотим импортировать следующие пакеты:

import streamlit as st
import numpy as np
import pandas as pd
import time

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

st.title('My first app')

Мы также можем написать стандартную строку с помощью этого оператора:

st.write("WRITE THE TEXT HERE")

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

st.write("Here's our first attempt at using data to create a table:")
st.write(pd.DataFrame({
    'first column': [1, 2, 3, 4],
    'second column': [10, 20, 30, 40]
}))

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

Потрясающие! Streamlit также имеет очень классную встроенную функцию, которая немного упрощает создание графического интерфейса, этот метод называется «Magic». Без использования команд streamlit, как указано выше, приведенный ниже сценарий также выдаст тот же результат, что и выше!

"""
# My first app
Here's our first attempt at using data to create a table:
"""

df = pd.DataFrame({
  'first column': [1, 2, 3, 4],
  'second column': [10, 20, 30, 40]
})
df

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

chart_data = pd.DataFrame(
     np.random.randn(20, 3),
     columns=['a', 'b', 'c'])

st.line_chart(chart_data)

Этот вывод в графическом интерфейсе был бы таким:

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

map_data = pd.DataFrame(
    np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],
    columns=['lat', 'lon'])

st.map(map_data)

Результат будет таким:

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

option = st.sidebar.selectbox(
    'Which number do you like best?',
     df['first column'])

'You selected:', option
left_column, right_column = st.beta_columns(2)
pressed = left_column.button('Press me?')
if pressed:
    right_column.write("Woohoo!")

expander = st.beta_expander("FAQ")
expander.write("Here you could put in some really, really long explanations...")

По сути, этот вывод будет таким:

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

'Starting a long computation...'

# Add a placeholder
latest_iteration = st.empty()
bar = st.progress(0)

for i in range(100):
  # Update the progress bar with each iteration.
  latest_iteration.text(f'Iteration {i+1}')
  bar.progress(i + 1)
  time.sleep(0.1)

'...and now we\'re done!'

По сути, это выводит на печать следующее:

Потрясающие! Это окончательный код всего нашего проекта:

import streamlit as st
# To make things easier later, we're also importing numpy and pandas for
# working with sample data.
import numpy as np
import pandas as pd
import time

st.title('My first app')

st.write("Here's our first attempt at using data to create a table:")
st.write(pd.DataFrame({
    'first column': [1, 2, 3, 4],
    'second column': [10, 20, 30, 40]
}))
"""
# My first app
Here's our first attempt at using data to create a table:
"""

df = pd.DataFrame({
  'first column': [1, 2, 3, 4],
  'second column': [10, 20, 30, 40]
})

df

chart_data = pd.DataFrame(
     np.random.randn(20, 3),
     columns=['a', 'b', 'c'])

st.line_chart(chart_data)

map_data = pd.DataFrame(
    np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],
    columns=['lat', 'lon'])

st.map(map_data)

if st.checkbox('Show dataframe'):
    chart_data = pd.DataFrame(
       np.random.randn(20, 3),
       columns=['a', 'b', 'c'])

    st.line_chart(chart_data)

option = st.selectbox(
    'Which number do you like best?',
     df['first column'])

'You selected: ', option

left_column, right_column = st.beta_columns(2)
pressed = left_column.button('Press me?')
if pressed:
    right_column.write("Woohoo!")

expander = st.beta_expander("FAQ")
expander.write("Here you could put in some really, really long explanations...")

'Starting a long computation...'

# Add a placeholder
latest_iteration = st.empty()
bar = st.progress(0)

for i in range(100):
  # Update the progress bar with each iteration.
  latest_iteration.text(f'Iteration {i+1}')
  bar.progress(i + 1)
  time.sleep(0.1)

'...and now we\'re done!'

Однако мы еще не закончили, нам еще нужно запустить код!

Запуск проекта

Запуск проекта streamlit немного отличается от запуска стандартного проекта Python, мы должны запустить этот проект с помощью команды streamlit в нашем терминале / командной строке. Для этого сначала сохраните файл Python и получите каталог с этим файлом. Затем давайте перейдем к нашему терминалу / командной строке и воспользуемся следующей командой streamlit:

streamlit run DIRECTORY TO YOUR PYTHON FILE/file.py

Как только мы запустим это в нашем Терминале, мы должны увидеть, что наш терминал открывает опцию команды streamlit и открывает веб-страницу в нашем веб-браузере по умолчанию, затем мы видим, что наш веб-браузер заполняется нашим кодом Streamlit, вот что готовый проект должно выглядеть так:

Поздравляю! Вы только что создали свой первый графический интерфейс Streamlit Python! У меня, вероятно, будет много руководств, которые будут отражать эту конкретную статью, поэтому я определенно рекомендую прочитать больше о streamlit! Наслаждайтесь созданием графического интерфейса с помощью этого инструмента!