返回

Streamlit 中使用动态按钮连接回调函数返回值:一步一步指南

python

Streamlit:使用动态按钮连接回调函数返回值

简介

Streamlit 是一款功能强大的 Python 库,它允许开发人员轻松创建交互式 Web 应用程序。其中一项关键功能是能够生成动态按钮,这些按钮可以连接到回调函数并返回一个值。这在构建交互式应用程序时非常有用,例如游戏或调查。

问题:连接回调函数返回值

假设你想要生成一系列 Streamlit 按钮,每个按钮都对应于 Google 表格中的电影标题。每个按钮的回调函数相同,该函数返回一个电影海报路径。你的目标是读取函数的返回值并将其用于显示电影海报。

解决方案:使用 State 对象

要连接动态生成按钮的回调函数返回值,你可以使用 state 对象。state 对象允许你在应用程序中存储和访问数据。

步骤

  1. 初始化一个空的 state 对象。
  2. 在回调函数中,使用 state 对象设置一个键值对,其中键是回调函数返回的值,值是电影海报路径。
  3. 在主循环中,在按钮单击事件后更新 state 对象。
  4. 在循环外,使用 state 对象访问回调函数的返回值并显示电影海报。

代码

import streamlit as st

# 初始化 State 对象
state = st.empty()

# 按钮回调函数
def get_movie_art(poster):
    poster_path = f'{movie_art_endpoint}{poster}'
    state.poster_path = poster_path

# 生成动态按钮
for title in rh_movie_list:
    if type(title) is float:
        break
    with col1:
        st.button(
            title, key=title, on_click=get_movie_art, args=(title,),
            use_container_width=True
        )

# 读取 State 对象并显示电影海报
if state.poster_path:
    st.image(state.poster_path)

结论

通过使用 state 对象,你可以将回调函数的返回值连接到动态生成的 Streamlit 按钮。这使你能够构建交互式应用程序,其中按钮单击事件可以触发特定操作并更新应用程序的状态。

常见问题解答

  1. 什么是 Streamlit?
    Streamlit 是一个 Python 库,用于创建交互式 Web 应用程序。
  2. 如何生成动态按钮?
    使用 st.button() 函数。
  3. 如何在回调函数中访问 state 对象?
    使用 state. 前缀访问属性,如 state.poster_path
  4. 如何在循环外读取 state 对象?
    使用 if 语句检查 state 对象的属性是否设置。
  5. 使用 state 对象有什么好处?
    state 对象允许你在应用程序中存储和访问数据,从而实现交互式功能。