在编写gradio的时候希望可以实时输出状态(控制台或者数字)
但是遇到了直接调用函数失效的情况。
经过折腾后,了解了正确构造的方式,现以一个demo来演示
import gradio as gr
from datetime import datetime
# 定义一个函数,返回当前的日期和时间。
def current_time():
def inner():
now = datetime.now()
current_time = now.strftime("%Y-%m-%d %H:%M:%S")
return f"欢迎使用,当前时间是: {current_time}"
return inner
# 使用gr.Blocks创建一个Gradio
with gr.Blocks() as demo:
gr.Markdown("# Gradio实时输出的实现")
out_1 = gr.Textbox(label="实时状态",
value=current_time(),
every=1,
info="当前时间",)
# 启动
demo.launch()
可以看到,需要嵌套一个def来正确调用
这个def的功能是这样的
inner_function = current_time()
inner_function()
#输出:'欢迎使用,当前时间是: 2023-11-06 22:25:26'
也就是经过这样写,传给Value的是一个函数而不是一个结果。
Gradio也就能正常调用了。