Очистка ввода текста в Streamlit: удобные методы для удобных приложений

Когда дело доходит до создания удобных для пользователя веб-приложений, решающее значение имеет управление пользовательским вводом. В Streamlit, популярной библиотеке Python для создания интерактивных веб-приложений, очистка ввода текста является общим требованием. В этой статье мы рассмотрим несколько методов очистки ввода текста в Streamlit, используя разговорный язык и попутно предоставляя примеры кода. Итак, приступим!

Метод 1: использование кнопки для очистки ввода текста.
Один простой подход — добавить кнопку, при нажатии которой содержимое поля ввода текста очищается. Вот пример:

import streamlit as st
text_input = st.text_input("Enter text")
clear_button = st.button("Clear")
if clear_button:
    text_input = ""

В этом методе мы создаем поле ввода текста, используя st.text_input(), и кнопку, используя st.button(). При нажатии кнопки (clear_buttonстановится True) мы присваиваем text_inputпустую строку, фактически очищая поле ввода.

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

import streamlit as st
text_input = st.text_input("Enter text")
if st.button("Clear (Ctrl+Backspace)"):
    text_input = ""
# Register the keyboard shortcut
st.markdown(
    """
    <style>
    .css-1b9dtmx {
        visibility: hidden;
    }
    </style>
    """,
    unsafe_allow_html=True,
)
st.markdown(
    """
    <script>
    document.addEventListener("keydown", function(e) {
        if (e.ctrlKey && e.code === "Backspace") {
            document.querySelector(".css-1b9dtmx").click();
        }
    });
    </script>
    """,
    unsafe_allow_html=True,
)

Этот метод регистрирует сочетание клавиш (Ctrl+Backspace), которое запускает действие очистки. При нажатии ярлыка поле ввода текста очищается.

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

import streamlit as st
from streamlit.report_thread import get_report_ctx
from streamlit.server.server import Server
def clear_text_input():
    ctx = get_report_ctx()
    session_info = Server.get_current()._session_info_by_id[ctx.session_id]
    session_info.session_state.text_input = ""
text_input = st.text_input("Enter text")
if st.button("Clear"):
    clear_text_input()
# Initializing session state
if "text_input" not in st.session_state:
    st.session_state.text_input = ""
else:
    text_input = st.session_state.text_input

В этом методе мы определяем вспомогательную функцию clear_text_input(), которая очищает поле ввода текста. Мы используем состояние сеанса Streamlit для хранения и доступа к значению поля ввода текста.

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

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