Я сделал простой трекер веса, который отображает прогресс в виде графика — веб-приложение без HTML/JS.

Я изучаю Python уже несколько месяцев и очень хотел поделиться одним из своих проектов с друзьями и в сети. Изучение HTML/CSS/JS или любого фреймворка для front-end казалось огромной работой для такого простого желания.

Я решил эту проблему, используя либ Abstra Cloud (полный отказ от ответственности: я работал на них!). Я смог создать пользовательский интерфейс и навигацию из моего скрипта, просто обновив команды, например, с «input» на «read». Все веб-приложение — это всего лишь 1 файл Python + 1 tsv-файл.

Я использовал виджет аутентификации, чтобы поделиться с друзьями, но здесь выбрал простое имя пользователя, чтобы каждый мог протестировать его без проблем. Помимо библиотеки hackerforms, я использовал Pandas и Plotly для построения и отображения графика.

Это действительно простой сценарий, но мне понравилось, что всего за несколько строк кода можно создать такой полезный инструмент.

Нажмите здесь, чтобы попробовать трекер

Исходный код:

from hackerforms import *
import pandas as pd
from os.path import exists
import time
import datetime
import plotly.express as px

user = read("What's your username? Choose one and use it everytime to see your progress!")

option = read_multiple_choice(f'Hey {user}. What would you like to do?', ['Insert new weight', 'See progress'], button_text=None)

if not exists("weights.tsv"):
    with open("weights.tsv", "a") as f:
        f.write("usertweighttdaten")


if option == 'Insert new weight':
    now = time.localtime()
    year = now.tm_year
    month = now.tm_mon
    day = now.tm_mday

    date = read_date("Add date of measurement", initial_value=datetime.date(year,month,day))

    weight = read_number("Fill your weight")

    with open("weights.tsv", "a") as f:
        f.write(f"{user}t{weight}t{date}n")


df = pd.read_csv("weights.tsv", delimiter="t")
df.date = df.date.astype('datetime64')
df = df.sort_values('date')
df = df[df.user == user]

fig = px.line(df, x='date', y='weight')
display_plotly(fig)
Вход в полноэкранный режим Выход из полноэкранного режима

Оцените статью
devanswers.ru
Добавить комментарий