Освоение Streamlit: как передавать значения ползунка в функции обратного вызова

Streamlit — это мощная библиотека Python, которая позволяет с легкостью создавать интерактивные веб-приложения. Одной из ключевых особенностей Streamlit является возможность создания ползунков, которые позволяют пользователям выбирать значения в заданном диапазоне. В этой статье мы рассмотрим различные методы передачи значений ползунка в функции обратного вызова в Streamlit. Мы предоставим примеры кода и объясним шаги в простой и разговорной форме.

Метод 1: использование функции st.slider() и метода on_change()
Функция st.slider() в Streamlit позволяет нам создать виджет-слайдер. Мы можем передать выбранное значение в функцию обратного вызова, используя метод on_change(). Вот пример:

import streamlit as st
def callback_function(value):
    st.write("Slider value:", value)
slider_value = st.slider("Select a value", 0, 100)
slider_value.on_change(callback_function)

Метод 2: использование состояния сеанса Streamlit
Streamlit предоставляет функцию состояния сеанса, которая позволяет нам хранить данные и получать к ним доступ между различными вызовами функций. Мы можем использовать эту функцию для передачи значений ползунка в функции обратного вызова. Вот пример:

import streamlit as st
def callback_function():
    slider_value = st.session_state.slider_value
    st.write("Slider value:", slider_value)
st.slider("Select a value", 0, 100, key="slider_value")
st.button("Submit", on_click=callback_function)

Метод 3: использование пользовательских компонентов Streamlit
Streamlit позволяет интегрировать пользовательские компоненты, созданные с использованием JavaScript и HTML. Создав собственный компонент слайдера, мы можем добиться более сложной функциональности и передавать значения функциям обратного вызова. Вот пример:

import streamlit as st
slider_value = st.slider("Select a value", 0, 100, key="slider")
st.components.v1.html(
    """
    <script>
        const slider = document.getElementById("slider");
        slider.addEventListener("input", (event) => {
            const value = event.target.value;
            Streamlit.setComponentValue(value);
        });
    </script>
    """
)
# Access the value in a callback function
def callback_function():
    value = st.session_state.slider
    st.write("Slider value:", value)
st.button("Submit", on_click=callback_function)

В этой статье мы рассмотрели различные методы передачи значений ползунка в функции обратного вызова в Streamlit. Мы рассмотрели три метода: использование метода on_change(), использование состояния сеанса Streamlit и использование пользовательских компонентов Streamlit. Эти методы обеспечивают гибкость и позволяют эффективно обрабатывать события слайдера в приложениях Streamlit. Используя эти методы, вы можете создавать интерактивные и динамические веб-интерфейсы, повышающие удобство работы пользователей.

Не забудьте поэкспериментировать с этими методами и выбрать тот, который лучше всего подходит для вашего конкретного случая использования. Удачного программирования с Streamlit!