pip install gradio
1-ip,端口
gradio_interface().launch(server_name='0.0.0.0', server_port='9981', share=False, inbrowser=True, max_threads=1, debug=True, show_api=False)
2-构建您的第一个演示
app.py
import gradio as gr
def greet(name, intensity):
return "Hello, " + name + "!" * int(intensity)
demo = gr.Interface(
fn=greet,
inputs=["text", "slider"],
outputs=["text"],
)
demo.launch()
python app.py
3-自动重装加快开发速度
import gradio as gr
with gr.Blocks() as demo:
gr.Markdown("# Greetings from Gradio!")
inp = gr.Textbox(placeholder="What is your name?")
out = gr.Textbox()
inp.change(fn=lambda x: f"Welcome, {x}!",
inputs=inp,
outputs=out)
if name == "__main__":
demo.launch()
-如果文件发生变化,它会自动为您重新运行该文件
gradio run.py
-配置python脚本的编码声明
gradio run.py --encoding cp1252
-如果您的应用程序接受命令行参数,您也可以传入它们
import gradio as gr
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--name", type=str, default="User")
args, unknown = parser.parse_known_args()
with gr.Blocks() as demo:
gr.Markdown(f"# Greetings {args.name}!")
inp = gr.Textbox()
out = gr.Textbox()
inp.change(fn=lambda x: x, inputs=inp, outputs=out)
if name == "__main__":
demo.launch()
gradio run.py --name Gretel
4-控制重装
您可以将不希望重新运行的代码放在if gr.NO_RELOAD:代码块。这里有一个例子,说明如何在开发过程中使用它只加载一次transformers模型
import gradio as gr
if gr.NO_RELOAD:
from transformers import pipeline
pipe = pipeline("text-classification", model="cardiffnlp/twitter-roberta-base-sentiment-latest")
demo = gr.Interface(lambda s: pipe(s), gr.Textbox(), gr.Label())
if name == "__main__":
demo.launch()
5-各个组件介绍
1. Gradio 提供了多种组件,用于创建交互式界面。
2. gr.Interface:用来构建可视化界面。
3. gr.Image:用于图像输入和输出。
4. gr.Textbox:用于文本框输入和输出。
5. gr.DataFrame:用于数据框输入和输出。
6. gr.Dropdown:用于下拉选项输入。
7. gr.Number:用于数字输入和输出。
8. gr.Markdown:用于Markdown输入和输出。
9. gr.Files:用于文件输入和输出。
10. cols :指定输入和输出组件的列数
11. rows :指定输入和输出组件的行数
12. inputs :指定输入组件的位置和大小
13. outputs :指定输出组件的位置和大小
14. gr.Button:用于创建按钮,可以绑定点击事件。
15. gr.Checkbox:用于创建我们的。
16. gr.Radio:用于创建单选按钮组。
17. gr.Slider:用于创建滑块。
18. gr.Audio:用于音频输入和输出。
19. gr.Video:用于视频输入和输出。
20. gr.ColorPicker:用于颜色选择。
21. gr.File:用于文件上传。
22. gr.Model3D:用于3D模型展示。
23. gr.Plot:用于制作图表。
24. gr.HTML:用于嵌入HTML内容。
25. gr.JSON:用于 JSON 数据的输入和输出
5.1-文本输入和输出
```
-文本输入 (Textbox)
import gradio as gr
def greet(name):
return f"Hello, {name}!"
demo = gr.Interface(fn=greet, inputs=gr.Textbox(lines=2, placeholder="Enter your name here..."), outputs="text")
demo.launch()
-文本输出 (Textbox)
import gradio as gr
def echo(text):
return text
demo = gr.Interface(fn=echo, inputs="text", outputs=gr.Textbox(label="Echoed Text"))
demo.launch()
```
5.2-图像输入和输出
-图像输入 (Image)
```
import gradio as gr
def process_image(image):
# 这里可以添加图像处理逻辑
return image
demo = gr.Interface(fn=process_image, inputs=gr.Image(type="pil"), outputs="image")
demo.launch()
```
-图像输出 (Image)
```
import gradio as gr
from PIL import Image
def generate_image():
img = Image.new("RGB", (100, 100), color="red")
return img
demo = gr.Interface(fn=generate_image, inputs=None, outputs=gr.Image(type="pil"))
demo.launch()
```
5.3-音频输入和输出
-音频输入 (Audio)
```
import gradio as gr
def process_audio(audio):
# 这里可以添加音频处理逻辑
return audio
demo = gr.Interface(fn=process_audio, inputs=gr.Audio(source="microphone"), outputs="audio")
demo.launch()
```
-音频输出 (Audio)
```
import gradio as gr
import numpy as np
def generate_audio():
sample_rate = 44100
t = np.linspace(0, 1, sample_rate, False)
audio = np.sin(440 2 np.pi * t)
return (sample_rate, audio)
demo = gr.Interface(fn=generate_audio, inputs=None, outputs=gr.Audio())
demo.launch()
```
5.4-视频输入和输出
-视频输入 (Video)
```
import gradio as gr
def process_video(video):
# 这里可以添加视频处理逻辑
return video
demo = gr.Interface(fn=process_video, inputs=gr.Video(), outputs="video")
demo.launch()
```
-视频输出 (Video)
```
import gradio as gr
def generate_video():
# 这里可以添加视频生成逻辑
return "path/to/video.mp4"
demo = gr.Interface(fn=generate_video, inputs=None, outputs=gr.Video())
demo.launch()
```
5.5-文件上传和下载
-文件上传 (File)
```
import gradio as gr
def process_file(file):
# 这里可以添加文件处理逻辑
return file.name
demo = gr.Interface(fn=process_file, inputs=gr.File(), outputs="text")
demo.launch()
```
-文件下载 (File)
```
import gradio as gr
def generate_file():
# 这里可以添加文件生成逻辑
return "path/to/file.txt"
demo = gr.Interface(fn=generate_file, inputs=None, outputs=gr.File())
demo.launch()
```
5.6--滑块 (Slider)
```
import gradio as gr
def slider_value(value):
return f"Slider value: {value}"
demo = gr.Interface(fn=slider_value, inputs=gr.Slider(minimum=0, maximum=100, step=1), outputs="text")
demo.launch()
```
5.7-单选按钮 (Radio)
```
import gradio as gr
def radio_choice(choice):
return f"You selected: {choice}"
demo = gr.Interface(fn=radio_choice, inputs=gr.Radio(["Option 1", "Option 2", "Option 3"]), outputs="text")
demo.launch()
```
5.8-复选框 (CheckboxGroup)
```
import gradio as gr
def checkbox_choices(choices):
return f"You selected: {', '.join(choices)}"
demo = gr.Interface(fn=checkbox_choices, inputs=gr.CheckboxGroup(["Option A", "Option B", "Option C"]), outputs="text")
demo.launch()
```
5.9-数据表格 (Dataframe)
```
import gradio as gr
import pandas as pd
def process_dataframe(df):
# 这里可以添加数据处理逻辑
return df
demo = gr.Interface(fn=process_dataframe, inputs=gr.Dataframe(headers=["Column 1", "Column 2"]), outputs="dataframe")
demo.launch()
```
6-按钮使用指南(事件处理和回调)
按钮回调:可以使用gr.Button创建按钮,并通过click方法绑定点击事件的回调函数。
输入组件事件:可访问输入组件(如gr.Textbox、gr.Slider等)事件,即change当输入值解析时触发回调函数。
自定义事件:可以定义自定义事件,并gr.Event绑定函数。
## 整个网页代码
import gradio as gr
# 定义一个处理函数,模拟对输入数据的处理
def process_data(text, radio, checkbox, slider, file, image, video, audio, dataframe):
# 这里只是简单地返回输入数据,实际应用中可以进行复杂的处理
return (
text,
radio,
checkbox,
slider,
file.name if file else "No file uploaded",
image,
video,
audio,
dataframe
)
7-创建 Gradio 界面
import gradio as gr
# 定义一个处理函数,模拟对输入数据的处理
def process_data(text, radio, checkbox, slider, file, image, video, audio, dataframe):
# 这里只是简单地返回输入数据,实际应用中可以进行复杂的处理
return (
text,
radio,
checkbox,
slider,
file.name if file else "No file uploaded",
image,
video,
audio,
dataframe
)
# 创建 Gradio 界面
with gr.Blocks() as demo:
gr.Markdown("# Gradio 组件示例")
with gr.Row():
text_input = gr.Textbox(label="文本输入")
radio_input = gr.Radio(["选项1", "选项2", "选项3"], label="单选按钮")
checkbox_input = gr.CheckboxGroup(["选项A", "选项B", "选项C"], label="复选框")
slider_input = gr.Slider(minimum=0, maximum=100, label="滑块")
with gr.Row():
file_input = gr.File(label="文件上传")
image_input = gr.Image(label="图像上传")
video_input = gr.Video(label="视频上传")
audio_input = gr.Audio(label="音频上传")
with gr.Row():
dataframe_input = gr.Dataframe(label="数据表格")
submit_button = gr.Button("提交")
with gr.Row():
text_output = gr.Textbox(label="文本输出")
radio_output = gr.Textbox(label="单选按钮输出")
checkbox_output = gr.Textbox(label="复选框输出")
slider_output = gr.Textbox(label="滑块输出")
file_output = gr.Textbox(label="文件输出")
image_output = gr.Image(label="图像输出")
video_output = gr.Video(label="视频输出")
audio_output = gr.Audio(label="音频输出")
dataframe_output = gr.Dataframe(label="数据表格输出")
# 定义按钮点击事件的回调函数
submit_button.click(
fn=process_data,
inputs=[text_input, radio_input, checkbox_input, slider_input, file_input, image_input, video_input,audio_input, dataframe_input],
outputs=[text_output, radio_output, checkbox_output, slider_output, file_output, image_output, video_output,audio_output, dataframe_output]
)
# 启动界面
demo.launch()
评论区