Lekcja 12 - Nikola Horn
Zadanie domowe: Formularz z zapisem danych do pliku JSON
import streamlit as st
import json
st.title("Formularz pracownika")
st.write("Czy wyrażasz zgodę na przetwarzanie danych osobowych?")
zgoda = st.checkbox("Wyrażam zgodę")
if zgoda:
with st.form("formularz"):
st.write("Uzupełnij wszystkie pola zgodnie z prawdą.")
imie = st.text_input(label="Imię i nazwisko")
wiek = st.slider(label="Wiek", min_value=18, max_value=100)
wyksztalcenie = st.radio('Posiadane wykształcenie:', options=['Podstawowe', 'Ponadpodstawowe', 'Średnie', 'Zawodowe', 'Wyższe'])
submitted = st.form_submit_button("Prześlij")
if submitted:
st.write("Dziękujemy za wypełnienie formularza!")
danepracownika = {imie: (wiek, wyksztalcenie)}
json_string = json.dumps(danepracownika)
st.json(json_string, expanded=True)
st.download_button(
label="Pobierz dane",
file_name="dane.json",
mime="application/json",
data=json_string,
)
Orzeł czy reszka?
import streamlit as st
import random
st.header("Orzeł czy reszka?")
lista = ["orzel.jpg", "reszka.jpg"]
losowy = random.choice(lista)
if st.button("Flip"):
st.image(losowy)
Kursy walut
import streamlit as st
import pandas as pd
kursy = pd.read_excel("waluty.xlsx")
kolumny = list(kursy.columns)
kolumny.pop(0)
kursy["data"] = kursy["data"].astype(str)
#sprobowac z iloc
for waluta in kolumny:
kursy[waluta] = kursy[waluta].str.replace(",", ".").astype(float)
wybor = st.multiselect(label="Wybierz waluty", options=kolumny, default="1USD")
st.line_chart(kursy, x="data", y=wybor)
Notatki z zajęć
Jest cała grupa aplikacji, które są tak naprawdę stroną www dostarczoną z bardzo "odchudzoną" przeglądarką, np. Discord, Slack, MS Teams. Dlatego warto poznać jakiś framework webowy.
Streamlit
Biblioteka/framework stworzona z myślą o budowaniu stron do pracy z danymi czy machine learning. Jego mocną stroną są różnej maści panele informacyjne.
pip install streamlit
import streamlit as st
st.write("Hello World!"
Aby uruchomić aplikację streamlitową należy wpisać w terminalu:
streamlit run nazwapliku.py
Komponenty/funkcje:
API Reference - Streamlit Docs

W momencie ruszenia jakimś komponentem/widgetem cały program jest uruchamiany jeszcze raz! Żeby tak się nie robiło możemy użyć formularza (st.form), w którym wszystko się zapisuje, ale na końcu pojawi się przycisk "Wyślij". Inną opcją jest użycie st.session_state
Session State is a way to share variables between reruns, for each user session.
st.rerun - przeładowuje ekran