jeudi 25 mai 2023

Values dissapear after use button in streamlit

I am trying to write an application to play Wheel of Fortune. Once I draw a password and want to e.g. draw points the password disappears. I know that this is caused by refreshing the application after pressing another button, but I do not know how to stop it.

This is how my code looks like.

import streamlit as st
import random

# Create a list containing the letters in a word
def lista_slowo(slowo):
    slowo = slowo.lower()
    lista_slowo = []
    for litera in slowo:
        lista_slowo.append(litera)
    return lista_slowo

# Create an empty list to display
def pusta_lista_na_tablicy(slowo):
    pusta_lista_na_tablicy = []
    for litera in slowo:
        pusta_lista_na_tablicy.append("_")
    return pusta_lista_na_tablicy

# Converting a list to a string
def zamien_na_stringa(lista_na_tablicy):
    napis = ""
    for x in lista_na_tablicy:
        napis = napis + x + " "
    return napis

st.sidebar.title("Koło fortuny")
st.sidebar.text("Witamy w grze Koło Fortuny.")
st.sidebar.text("Wybierz liczbę graczy.\nNastępnie kliknij przycisk 'Losuj kategorię'.")

slownik_kategorii = {"Zwierzęta":["Krowa","Kura","Koń"],
             "Owoce":["Mandarynka","Pomarańcza","Truskawka"],
             "Warzywa":["Ogórek","Marchewka","Sałata"],
             "Ubrania":["Spodnie","Koszulka","Koszula"],
            "Pojazdy":["Samochód","Motocykl","Samolot"]}

slownik_wartosci = [100,200,300,400,500,600,700,800,900,1000,1500,0]



ilosc_graczy = st.sidebar.selectbox("Wybierz ilość graczy",[1,2])

losuj = st.sidebar.button("Losuj kategorię")

kategoria = st.subheader("")

if losuj:
    kategoria = random.choice(list(slownik_kategorii))
    st.subheader(f"Kategoria: {kategoria}")
    slowo = random.choice(slownik_kategorii[kategoria])
    lista_na_tablicy = pusta_lista_na_tablicy(slowo)
    napis = zamien_na_stringa(lista_na_tablicy)
    st.title(napis)

    st.text("Słowo do odgadnięcia " + slowo)


odgaduj = st.sidebar.button("Odgadnij hasło")
krec = st.sidebar.button("Kręć kołem")
podaj_litere = st.sidebar.button("Podaje spółgłoskę")

if krec:
    wartosc = random.choice(slownik_wartosci)
    st.sidebar.text("Wartość spółgłoski: " + str(wartosc) + " zł")

if podaj_litere:
    podana_litera = ""
    podana_litera = st.sidebar.text_input("Wpisz spółgłoskę")
    st.sidebar.text(podana_litera)

I tried to replace the password generation button with a radio, but then every time you click another button the password draw from scratch




Aucun commentaire:

Enregistrer un commentaire