Gradio从入门到精通(6)---接口类Blocks


前言

Blocks 可以让组件布局更加灵活,在不适用Blocks的情况下,组件的布局是默认的垂直布局。通过gr.Row , gr.Column等控制组件的布局

Blocks 是 Gradio 的低级 API,它允许您创建比 Interfaces 更多的自定义 Web 应用程序和演示(但仍然完全使用 Python)。

与 Interface 类相比,Blocks 提供了更大的灵活性和控制:(1) 组件的布局 (2) 触发函数执行的事件 (3) 数据流(例如,输入可以触发输出,从而触发下一级输出)。Blocks 还提供了将相关演示组合在一起的方法,例如使用选项卡。

Blocks 的基本用法如下:创建一个 Blocks 对象,然后将其用作上下文(使用 “with” 语句),然后在 Blocks 上下文中定义布局、组件或事件。最后,调用 launch() 方法启动演示。

一、Blocks布局方式

行布局(Row):用于水平排列组件。
列布局(Column):用于垂直排列组件。
标签页(Tab):允许你将界面分割成多个标签页,每个标签页包含独立的组件和布局。

二、方法

launch方法

gradio.Blocks.launch(···)

功能描述
launch()方法的主要功能是启动一个本地服务器,使得用户可以在Web浏览器中查看和交互Gradio应用程序。它提供了多种部署方式,包括本地部署、通过HuggingFace托管、FastAPI挂载以及Gradio-lite浏览器集成。

常用参数

参数名 类型 描述 默认值
share Boolean 是否生成公共访问地址。当设置为True时,Gradio将提供一个外网URL以便访问应用。 False
auth Tuple/Function 设置登录验证。可以是一个包含用户名和密码的元组,或者是一个自定义的验证函数。
inline Boolean 是否将Gradio应用嵌入到当前页面的iframe中,而不是在新窗口或标签页中打开。 False
inbrowser Boolean 是否在新浏览器标签页中打开Gradio应用。如果为True,则点击启动按钮将在新标签页中打开应用。 False
debug Boolean 是否启用调试模式。在调试模式下,将提供更多错误信息,特别是在Jupyter环境中运行时。 False
favicon_path String (文件路径) 设置网页图标的路径。允许你自定义浏览器标签页上显示的图标。
show_api Boolean 是否在Gradio应用的底部显示API帮助文档。这有助于开发者了解可用的API端点。 False
ssl_verify Boolean 是否在请求外部资源时验证SSL证书。设置为False可以绕过自签名证书的验证错误,但请注意安全风险。 True

示例代码

import gradio as gr
def reverse(text):
    return text[::-1]
with gr.Blocks() as demo:
    with gr.Row():
        button = gr.Button(value="Reverse")
        button.click(reverse, gr.Textbox(), gr.Textbox())

demo.launch(share=False, auth=("123", "123"))

在这里插入图片描述

可以看到使用gr.Row函数将button的和输入框放到了一行,如果使用该函数,则默认是垂直布局

import gradio as gr
def reverse(text):
    return text[::-1]
with gr.Blocks() as demo:
	button = gr.Button(value="Reverse")
    button.click(reverse, gr.Textbox(), gr.Textbox())

demo.launch(share=False, auth=("123", "123"))

在这里插入图片描述

queue方法

gradio.Blocks.queue(···)

功能描述
launch()方法的主要功能是通过启用队列,您可以控制用户何时知道自己在队列中的位置,并设置允许的最大事件数限制。

示例代码

with gr.Blocks() as demo:
    button = gr.Button(label="Generate Image")
    button.click(fn=image_generator, inputs=gr.Textbox(), outputs=gr.Image())
demo.queue(max_size=10)
demo.launch()

load方法

gradio.Blocks.load(block, ···)

功能描述
此侦听器在浏览器中最初加载 Blocks 时触发。

unload方法

gradio.Blocks.unload(fn, ···)

功能描述
当用户关闭或刷新选项卡以结束用户会话时,将触发此侦听器。它对于在应用程序关闭时清理资源很有用。

示例代码

import gradio as gr
with gr.Blocks() as demo:
    gr.Markdown("# When you close the tab, hello will be printed to the console")
    demo.unload(lambda: print("hello"))
demo.launch()

总结

Blocks的灵活性意味着你可以创建几乎任何类型的Web界面,但这也需要一定的学习和实践才能熟练掌握。

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-18 18:38:01       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-18 18:38:01       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-18 18:38:01       58 阅读
  4. Python语言-面向对象

    2024-07-18 18:38:01       69 阅读

热门阅读

  1. 数据库:SQL 函数有哪些?

    2024-07-18 18:38:01       25 阅读
  2. C++中const修饰指针的范围

    2024-07-18 18:38:01       19 阅读
  3. X86架构和ARM架构的区别

    2024-07-18 18:38:01       19 阅读
  4. C# 使用模式匹配的好处,因为好用所以推荐~

    2024-07-18 18:38:01       25 阅读
  5. 大语言模型系列:Transformer

    2024-07-18 18:38:01       20 阅读
  6. SpringBoot日常:常用数据类型比较

    2024-07-18 18:38:01       21 阅读
  7. 如何查看Linux中某个项目是否在Docker中运行

    2024-07-18 18:38:01       18 阅读
  8. 如何发掘孩子的兴趣特长

    2024-07-18 18:38:01       18 阅读
  9. Oracle数据泵和RMAN异机备份还原速度对比

    2024-07-18 18:38:01       21 阅读
  10. 2024年对网络安全专业的观点解析

    2024-07-18 18:38:01       19 阅读