简单的Gradio实现一个统计界面+日志输出

版本2

python 复制代码
import gradio as gr
import pandas as pd
import time  # 模拟耗时操作

def scan_and_get_stats():
    """模拟文档扫描与统计过程,逐步返回日志和最终表格"""
    # 步骤1
    log = "🔍 正在初始化扫描任务...\n"
    yield pd.DataFrame(), log  # 先清空表格或保留原表格,这里传空表
    time.sleep(0.5)

    # 步骤2
    log += "📂 正在读取文档目录...\n"
    yield pd.DataFrame(), log
    time.sleep(0.6)

    # 步骤3
    log += "🏷️ 正在按类别分类文档...\n"
    yield pd.DataFrame(), log
    time.sleep(0.7)

    # 步骤4:生成真实数据
    log += "📊 正在计算各类别占用空间...\n"
    yield pd.DataFrame(), log
    time.sleep(0.5)

    # 模拟实际统计结果
    data = {
        "文档类别": ["合同", "财务报告", "发票", "会议纪要", "技术文档", "用户手册", "其他"],
        "占用空间 (MB)": [120, 340, 85, 45, 210, 160, 95]
    }
    df = pd.DataFrame(data)

    # 步骤5:完成
    log += "✅ 扫描与统计完成!\n"
    yield df, log

# 构建界面
with gr.Blocks(title="文档类别与空间统计") as demo:
    gr.Markdown("## 📁 文档类别与存储空间统计")

    with gr.Row():
        with gr.Column(scale=2):
            stats_table = gr.DataFrame(
                value=pd.DataFrame({"文档类别": [], "占用空间 (MB)": []}),
                headers=["文档类别", "占用空间 (MB)"],
                label="文档统计结果"
            )
        with gr.Column(scale=1):
            log_box = gr.Textbox(
                label="执行日志",
                interactive=False,
                lines=10,
                max_lines=15,
                placeholder="点击"刷新数据"查看执行步骤..."
            )

    refresh_btn = gr.Button("🔄 刷新数据")
    
    # 绑定事件:刷新按钮点击后,逐步更新表格和日志
    refresh_btn.click(
        fn=scan_and_get_stats,
        inputs=None,
        outputs=[stats_table, log_box]
    )

if __name__ == "__main__":
    demo.launch()

版本1

python 复制代码
import gradio as gr
import pandas as pd

# 模拟的文档类别与空间数据(单位:MB)
def get_document_stats():
    data = {
        "文档类别": ["合同", "财务报告", "发票", "会议纪要", "技术文档", "用户手册"],
        "占用空间 (MB)": [120, 340, 85, 45, 210, 160]
    }
    df = pd.DataFrame(data)
    return df

# 构建 Gradio 界面
with gr.Blocks(title="文档类别与空间统计") as demo:
    gr.Markdown("## 📁 文档类别与存储空间统计")
    
    # 显示表格
    stats_table = gr.DataFrame(
        value=get_document_stats(),
        headers=["文档类别", "占用空间 (MB)"],
        datatype=["str", "number"],
        label="文档统计"
    )
    
    # 可选:添加刷新按钮(重新加载数据)
    refresh_btn = gr.Button("🔄 刷新数据")
    refresh_btn.click(fn=get_document_stats, inputs=None, outputs=stats_table)

# 启动应用
if __name__ == "__main__":
    demo.launch()
相关推荐
DeepVisionary5 小时前
谷歌 Gemini Omni 1.1 Flash 正式发布:4K 视频、40 秒场景延伸,视频生成进入按 token 计费时代
python·自动化
阡之尘埃5 小时前
Python数据分析案例85——大模型微调全流程(SFT的LoRA微调)
人工智能·python·深度学习·语言模型·llm·微调·千问
海兰5 小时前
【应用】基于 Next.js 16 + Python mplfinance的金融K线图与技术指标可视化平台(三)
javascript·python·金融
cvcode_study6 小时前
Ollama+ComfyUI 多模态
大数据·人工智能·python
wangruofeng6 小时前
AI 画架构图总差点意思,archify 给它加了一条验收流水线
架构·github·aigc
LadiesAndGentlemen6 小时前
开源地理空间智能项目中的本体思想 4-4:收尾篇——五种做法怎么选,治理之后还剩什么活
人工智能·语言模型·开源·aigc·知识图谱
星核0penstarry7 小时前
试一试用gr.Workflow把AI多步骤串联变成可视化画布
人工智能·python·ai作画·api·ai编程·工作流·api聚合平台
taller_20007 小时前
【005】PiE 与传统 VBA 的核心区别
python·vba·pie·py
海兰7 小时前
【应用】基于 Next.js 16 + Python mplfinance的金融K线图与技术指标可视化平台(一)
javascript·python·金融
大衛說7 小时前
《Python 从入门到精通》系列总览与学习路线
开发语言·python·学习