Я изучаю 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)