简单的复选框选择问题

问题描述 投票:0回答:0

问题在sptllit-aggrid中保存复选框状态 我正在使用Python中使用

StreamLit-aggrid

,并在尝试在动态更新的网格中尝试cyperist复选框时面临问题。 问题上下文

我有三个数据帧:

df_1

:可以更新的主电网。
  • df_2:选择复选框的子集。
      df_1
    • :创建以将所选索引存储在
      df_3
      中,以确保更新为
    • st.session_state['saved_i']
    • .
      
      
    • 问题
      
      
      正确保存的复选框状态是在更新到
      df_1
      。
      但是,如果在
    • df_2
    中连续选择两个复选框:

第一个选择有效,可以正确保存。 第二选择

抓住了一个更新,但是它的信息是在

df_1

中存储的
结果是结果,第二个复选框选择是丢失
,并且在任何地方都没有保存。

我尝试了什么 检查选择是否出现在
df_2
(不出现)。

在更新之前,请努力手动存储索引(无效)。
  1. 问题
  2. 如何确保正确保存在st.session_state['saved_i']中的所有复选框选择?我希望grid_response_2.event_data保留所选复选框的状态。 Python中的代码:
    grid_response_2.event_data
    开机gif
  3. 当在
  4. st.session_state
中选择复选框时,应将其存储在

df_2中。 import pandas as pd import streamlit as st import numpy as np from st_aggrid import AgGrid, GridOptionsBuilder, JsCode, GridUpdateMode ################################################################################# # Creating df: df = pd.DataFrame({ 'i': range(20), 'Values': [f'P{i}' for i in range(20)] }) df['Selected'] = False ################################################################################# col1, col2 = st.columns(2) # Creating grid (df): gb = GridOptionsBuilder.from_dataframe(df) gb.configure_default_column(editable=True, groupable=True, resizeable=True) grid_options = gb.build() with col1: grid_response = AgGrid(df, gridOptions=grid_options, fit_columns_on_grid_load=False, height=250, ) ################################################################################# # Creating df_2: df_2 = grid_response.data.loc[grid_response.data['Selected']].copy() df_2['Selected'] = False # Pre-selecting the checkboxes from the previous interaction: if 'saved_i' in st.session_state: i_df_2 = df_2.index i_df_3 = st.session_state['saved_i'] select = i_df_3[np.isin(i_df_3, i_df_2)] df_2.loc[select, 'Selected'] = True ################################################################################# # Creating grid (df_2) if not df_2.empty: gb_2 = GridOptionsBuilder.from_dataframe(df_2) gb_2.configure_default_column(editable=True, groupable=True, resizeable=True) gb_2.configure_column('Selected', sort='desc') grid_options_2 = gb_2.build() with col2: grid_response_2 = AgGrid(df_2, gridOptions=grid_options_2, fit_columns_on_grid_load=False, height=250) ################################################################################# # Creating df_3 with selected checkboxes from df_2: df_3 = grid_response_2.data.loc[grid_response_2.data['Selected']].copy() ################################################################################# # Saving indexes in session for the next update: if not df_3.empty: st.session_state['saved_i'] = df_3["i"].astype(str)

在每次更新后都会动态重新创建,重置其选定的值,这就是问题。
    您必须使
  • df_2
    取决于会话状态选择,而不是对
    st.session_state['saved_i']
  • 的新鲜过滤。
  • 这是更新的代码。
  • df_2

python checkbox ag-grid streamlit
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.