HTML/JS가 없는 웹 앱인 그래프에 진행 상황을 표시하는 간단한 체중 추적기를 만들었습니다.

저는 몇 달 동안 Python을 배웠고 제 프로젝트 중 하나를 친구들과 온라인에서 공유하고 싶었습니다. HTML/CSS/JS나 프론트엔드를 위한 프레임워크를 배우는 것은 그런 단순한 소망을 위해 많은 일을 하는 것처럼 보였습니다.

나는 Abstra Cloud's lib를 사용하여 이 문제를 해결했습니다. 예를 들어 "input"에서 "read"로 명령을 업데이트하는 것만으로 스크립트에서 UI와 탐색을 생성할 수 있었습니다. 전체 웹 앱은 Python 파일 1개 + tsv 파일 1개입니다.

친구들과 공유하기 위해 인증 위젯을 사용했지만 여기에서는 간단한 사용자 이름을 선택하여 모든 사람이 번거로움 없이 테스트할 수 있도록 했습니다. hackerforms 라이브러리 외에도 Pandas와 Plotly를 사용하여 그래프를 만들고 표시했습니다.

정말 간단한 스크립트지만 단 몇 줄의 코드로 이렇게 유용한 도구를 빌드할 수 있다는 점이 마음에 들었습니다.

Click here to try out the tracker



소스 코드:

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("user\tweight\tdate\n")


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)

좋은 웹페이지 즐겨찾기