简单的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()
相关推荐
52Hz1182 小时前
力扣240.搜索二维矩阵II、160.相交链表、206.反转链表
python·算法·leetcode
jun_bai2 小时前
conda环境配置nnU-Net生物医学图像分割肺动脉静脉血管
开发语言·python
aitoolhub2 小时前
自媒体视觉物料高效创作新路径:稿定设计如何用AI重构内容生产逻辑
大数据·人工智能·aigc·媒体
2301_810730102 小时前
python第一次作业
python
xixi09242 小时前
selenium——浏览器基础操作(启动/访问/窗口控制)
开发语言·python
enfpZZ小狗2 小时前
使用Flask快速搭建轻量级Web应用
jvm·数据库·python
Rhys..2 小时前
python + selenium 如何定位动态元素
开发语言·python·selenium
余衫马2 小时前
Qt for Python:PySide6 入门指南(中篇)
开发语言·c++·python·qt
叫我:松哥2 小时前
基于YOLO的图像识别系统,结合Flask、Bootstrap和SQLite,提供图像检测、数据管理和用户交互功能,可以检测80个类别
人工智能·python·yolo·信息可视化·sqlite·flask·bootstrap