WTFunc / app.py
ldx967's picture
Upload 3 files
d79b285 verified
import gradio as gr
from function_generator import FunctionGenerator
def generate_function(sequence_str):
try:
sequence = [float(x.strip()) for x in sequence_str.split(',')]
generator = FunctionGenerator()
symbol_expr, general_expr, latex_expr = generator.generate(sequence)
return (
f"y = {str(symbol_expr)}",
general_expr,
f"$$\\Large {latex_expr}$$"
)
except Exception as err:
return f"错误: {str(err)}", "", ""
# 创建Gradio界面
with gr.Blocks() as demo:
gr.Markdown("## 数学函数生成器")
with gr.Row():
with gr.Column():
# 使用文本框输入
sequence_input = gr.Textbox(
label="输入数列(用逗号分隔)",
placeholder="例如: 1, 2, 4, 8, 16",
lines=1
)
# 示例按钮
with gr.Row():
example_btn1 = gr.Button("示例1: 1, 2, 4, 8, 16")
example_btn2 = gr.Button("示例2: 1, 3, 5, 7, 9")
example_btn3 = gr.Button("示例3: 1, 4, 9, 16, 25")
# 示例按钮点击事件
example_btn1.click(lambda: "1,2,4,8,16", outputs=sequence_input)
example_btn2.click(lambda: "1,3,5,7,9", outputs=sequence_input)
example_btn3.click(lambda: "1,4,9,16,25", outputs=sequence_input)
with gr.Row():
generate_btn = gr.Button("生成函数", variant="primary")
with gr.Row():
with gr.Column():
symbol_expr_output = gr.Textbox(label="符号表达式", interactive=False)
general_expr_output = gr.Textbox(label="一般数学表达式", interactive=False)
latex_expr_output = gr.Markdown(label="渲染的数学公式")
# 实时更新
sequence_input.change(
fn=generate_function,
inputs=sequence_input,
outputs=[symbol_expr_output, general_expr_output, latex_expr_output]
)
# 生成按钮点击事件
generate_btn.click(
fn=generate_function,
inputs=sequence_input,
outputs=[symbol_expr_output, general_expr_output, latex_expr_output]
)
if __name__ == "__main__":
demo.launch()