简单的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()
相关推荐
我没胡说八道5 小时前
高校论文AI检测优化工具对比研究与实测分析(2026)
人工智能·深度学习·机器学习·计算机视觉·aigc·论文
love530love5 小时前
LiveTalking 数字人项目 Windows 部署完全指南(EPGF 架构)
人工智能·windows·python·架构·livetalking·epgf
遇事不決洛必達5 小时前
【Python基础】GIL 锁是什么及其对爬虫的影响
爬虫·python·线程·进程·gil锁
CryptoPP6 小时前
快速对接东京证券交易所API数据:实战指南与代码示例
开发语言·人工智能·windows·python·信息可视化·区块链
探物 AI6 小时前
把 MambaOut 塞进 YOLOv11:会有什么样的反应
python·yolo·计算机视觉
如竟没有火炬7 小时前
最大矩阵——单调栈
数据结构·python·线性代数·算法·leetcode·矩阵
阳区欠7 小时前
【LangChain】LLM基础介绍
开发语言·python·langchain
Cosolar7 小时前
保姆级 CrewAI 教程:从零构建多智能体协作系统
人工智能·python·架构
GDAL7 小时前
使用 uv 管理 Python 版本
python·uv·版本
真实的菜7 小时前
Redis 从入门到精通(十二):典型业务场景实战 —— 排行榜、限流器、秒杀系统、Session 共享
数据库·redis·python