创建一个充当终端的小部件

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

我需要编写一个充当终端的 Streamlit 应用程序,这意味着它的行为与终端完全一样,包括在脚本需要时向用户询问 input()。

脚本“danse_macabre.py”是命令行文本角色扮演游戏,因此用户需要定期输入并从系统获得响应。它在终端中运行良好,但我想使用 Streamlit 制作它的网络版本,因此我的问题。

这是我到目前为止得到的,但它不起作用,它一直在加载。

你能帮忙吗?

import streamlit as st
import subprocess

st.title("Command-line interface")

# Define the command to be executed
cmd = ["python", "danse_macabre.py"]

# Create a subprocess object
process = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)

# Loop until the Python program exits
while process.poll() is None:
    # Check if the program has output
    output = process.stdout.readline()
    if output:
        st.text(output.strip())

    # Check if the program has an error
    error = process.stderr.readline()
    if error:
        st.error(error.strip())

    # Get user input using a Streamlit text_input component
    user_input = st.text_input("Input", "")

    # Pass user input to the Python program
    if user_input:
        process.stdin.write(user_input + "\n")
        process.stdin.flush()
python subprocess streamlit
© www.soinside.com 2019 - 2024. All rights reserved.