简单的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()
相关推荐
Csvn16 小时前
🌟 LangChain 30 天保姆级教程 · Day 13|OutputParser 进阶!让 AI 输出自动转为结构化对象,并支持自动重试!
python·langchain
AI攻城狮17 小时前
用 Obsidian CLI + LLM 构建本地 RAG:让你的笔记真正「活」起来
人工智能·云原生·aigc
cch891817 小时前
Python主流框架全解析
开发语言·python
sg_knight17 小时前
设计模式实战:状态模式(State)
python·ui·设计模式·状态模式·state
好运的阿财17 小时前
process 工具与子agent管理机制详解
网络·人工智能·python·程序人生·ai编程
张張40818 小时前
(域格)环境搭建和编译
c语言·开发语言·python·ai
weixin_4235339918 小时前
【Windows11离线安装anaconda、python、vscode】
开发语言·vscode·python
爱吃的小肥羊18 小时前
最火的 AI 生图模型 Nano Banana Pro,国内到底怎么免费用?
aigc
Ricky111zzz18 小时前
leetcode学python记录1
python·算法·leetcode·职场和发展