Stundas uzdevums: Pievienot interaktivitāti, izmantojot session_state, callback-us un dinamisku satura atjauninājumu.
70 min darba sadalījums: 1. uzdevums (~20 min) - atjauno teorijas piemēru vai minimālo prototipu; 2. uzdevums (~25 min) - pielieto to galvenajā uzdevumā; 3. uzdevums (~25 min) - pārbaudi rezultātu, izlabo kļūdas un tikai beigās pieraksti vienu secinājumu. Papildus/4. līmeņa uzdevums ir paredzēts tikai tad, ja pamatdarbs ir pabeigts.
Pirms sāc: izmanto iepriekš apgūto un šīs lapas teorijas/koda piemērus. Ja vajadzīga jauna komanda vai rīks, vispirms atrodi tās paraugu teorijas sadaļā.
st.session_state ir Streamlit galvenā funkcija interaktivitātei - datu glabāšana starp pārlādēm.
import streamlit as st
# Inicializācija (tikai pirmoreiz)
if "klikski" not in st.session_state:
st.session_state.klikski = 0
if "saraksts" not in st.session_state:
st.session_state.saraksts = []
# Atjaunināšana
if st.button("Klikšķini mani"):
st.session_state.klikski += 1
st.write(f"Klikšķi: {st.session_state.klikski}")
# Forma - apkopo visus inputus pirms iesniegšanas
with st.form("speletajs"):
vards = st.text_input("Vārds")
punkti = st.number_input("Punkti")
iesniegt = st.form_submit_button("Pievienot")
if iesniegt:
st.session_state.saraksts.append({"vards": vards, "punkti": punkti})
st.dataframe(st.session_state.saraksts)
Šis ir īss iesildīšanās uzdevums. Nokopē sagatavi, ielīmē to pareizajā koda vietā un palaid. Šeit pietiek droši izmēģināt tēmu 9.5 Interaktivitāte pārlūkprogrammā; detalizētu izpratni veidosi nākamajos uzdevumos.
Kopējamais piemērs vai sagatave: izmanto šo bloku kā starta punktu, nevis kā gala risinājumu.
import streamlit as st
# Inicializācija (tikai pirmoreiz)
if "klikski" not in st.session_state:
st.session_state.klikski = 0
if "saraksts" not in st.session_state:
st.session_state.saraksts = []
# Atjaunināšana
if st.button("Klikšķini mani"):
st.session_state.klikski += 1
st.write(f"Klikšķi: {st.session_state.klikski}")
# Forma - apkopo visus inputus pirms iesniegšanas
with st.form("speletajs"):
vards = st.text_input("Vārds")
punkti = st.number_input("Punkti")
iesniegt = st.form_submit_button("Pievienot")
if iesniegt:
st.session_state.saraksts.append({"vards": vards, "punkti": punkti})
st.dataframe(st.session_state.saraksts)
main.py failā un palaid no termināļa.Pievieno šīs stundas paņēmienu kā nelielu, strādājošu projekta daļu.
apstrada_gajienu(), rezultats vai routes.py.Pārbaudi, vai algoritms darbojas paredzami ar dažādiem datiem.
Ja pamatdarbs ir pabeigts, paplašini projektu ar vienu nelielu programmētu uzlabojumu.
if "x" not in st.session_state:.key="unik".import streamlit as st
st.title("▸ Mans To-Do")
if "todo" not in st.session_state:
st.session_state.todo = []
with st.form("forma", clear_on_submit=True):
jauns = st.text_input("Jauns uzdevums")
ok = st.form_submit_button("+ Pievienot")
if ok and jauns:
st.session_state.todo.append({"teksts": jauns, "izpildīts": False})
for i, t in enumerate(st.session_state.todo):
col1, col2 = st.columns([10, 1])
with col1:
st.session_state.todo[i]["izpildīts"] = st.checkbox(
t["teksts"], value=t["izpildīts"], key=f"cb{i}"
)
with col2:
if st.button("✕", key=f"d{i}"):
st.session_state.todo.pop(i)
st.rerun()