简单的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()
相关推荐
梯度下降者2 分钟前
零基础入门Python 爬虫
爬虫·python·数据分析·入门指南·webcrawler
“AI国潮设计-小江”1 小时前
【AIGC实战】Python+Stable Diffusion打造“英歌舞财神”IP,解锁“马到成功”等爆款情绪营销文案设计
开发语言·人工智能·python·prompt·aigc
benchmark_cc3 小时前
用 Python 拉 A 股全市场实时快照:Notebook 请求、结果校验与易错点
python·数据分析·pandas·量化交易·股票数据·quantdash
伞伞悦读3 小时前
【第70期】Adam二阶矩不是方差:偏差校正、动量与AdamW完整实验
python
外收内放3 小时前
Python基础语法练习题(73)
java·前端·python
锋行天下3 小时前
Langgraph HITL 中断运行,用户输入后输出打字效果
人工智能·python
Ferries4 小时前
用 WorkBuddy+DeepSeek 跑了30天自动矩阵,事情没那么简单
人工智能·aigc·vibecoding
时早玖沐4 小时前
给 AstrBot 写一个天气推送插件:12 次提交、6 个坑
python·开源·ai编程
触底反弹4 小时前
🚀 FastAPI 五大重难点深度剖析:从 500 报错到彻底搞懂 Depends、Pydantic 与 SQLAlchemy
python·fastapi