Wie verwalte ich eine dynamische Anzahl von Streamlit-Auswahlfeldern?Python

Python-Programme
Guest
 Wie verwalte ich eine dynamische Anzahl von Streamlit-Auswahlfeldern?

Post by Guest »

Ich versuche, eine Web-App zu erstellen, mit der der Benutzer nach Belieben Auswahlfelder hinzufügen und entfernen kann.
Ich habe eine Schaltfläche „Hinzufügen“, die ein neues Listenfeld erstellt, und ich Ich möchte neben jeder Listbox eine Schaltfläche zum Löschen haben, damit der Benutzer diese Listbox entfernen kann.
Ich stoße auf zwei Probleme:
  • Aus diesem Grund nehmen die Schaltfläche „Entfernen“ und das Listenfeld nicht den gleichen Platz ein sie sind nicht aufeinander ausgerichtet
    (wird später in einem Screenshot gezeigt). Gibt es vielleicht eine Möglichkeit, ein Raster dieser Widgets zu erstellen, um dieses Problem zu beheben?
  • Wenn ich auf die Schaltfläche „Entfernen“ drücke, versuche ich, sowohl das entsprechende Listenfeld als auch die Schaltfläche „Entfernen“ selbst zu löschen entsprechenden Tasten, aber nichts passiert.
Hier ist ein Code:

Code: Select all

st.button("Add",on_click = callbacks.add_callback,help="Add a new test",  key="Add", args=(engine, tests_body_container,) )

def add_callback(engine, container):
with container:
col1, col2 = st.columns([1,1])
st.session_state.test_count += 1
for i in range(st.session_state.test_count):
with col1:
st.selectbox(f"Test {i + 1}:", ("a", "b", "c"), key = "Test_" + str(i + 1))
with col2:
st.button("Remove", on_click = remove_callback, help="Remove this test",key="Remove_"+ str(i+1), args=("Test_" + str(i+1),"Remove_"+ str(i+1)))

Code: Select all

def remove_callback(key_of_test, key_of_remove_button):
del st.session_state[key_of_test]
del st.session_state[key_of_remove_button]
st.session_state.test_count -= 1
Hier ist die Fehlausrichtung:
Image

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post