gradio常用组件
- 1.gradio程序启动
- 2.写入html相关代码
- 3.文本框
- [4. 回车触发事件](#4. 回车触发事件)
- 5.选择按钮框
- 6.下拉框
- 7.点击按钮
- 8.清空按钮
- 9.监听组件
- 10.输出流
- 11.template
1.gradio程序启动
shell
import gradio as gr
def tab():
pass
with gr.Blocks() as ui:
gr.Markdown("# <center>🕵️♂️gradio test 🕵️♂️</center>")
tab()
ui.launch(server_name='127.0.0.1', server_port=8080,show_api=False, debug=True,share=True)
2.写入html相关代码
shell
gr.Markdown("# <center>🕵️♂️ Chatglm robot 🕵️♂️</center>")
3.文本框
shell
# placeholder:默认提示词
text=gr.Textbox( label='user',placeholder='input question')
4. 回车触发事件
shell
msg = gr.Textbox( label='user',placeholder='input question')
msg.submit(user, [msg, chatbot], [msg, chatbot], queue=False).then(bot, chatbot, chatbot)
5.选择按钮框
shell
mode_name= gr.Radio(['小红', '小白', '小胖', '小黑'], label='name', value='小红')
6.下拉框
shell
# value:默认值
# label:组件名称
mode_type= gr.Dropdown(['1','2','3','4'], label='type', value='1')
7.点击按钮
shell
# inputs:输入组件(输入参数),outputs:输出组件(输出参数)
# fn:触发时调用的函数
button = gr.Button("点击")
button.click(fn=update_keys, inputs=[model_key], outputs=prompt_key)
8.清空按钮
shell
text=gr.Textbox( label='user',placeholder='input question')
clear = gr.Button("清除历史记录")
clear.click(lambda: None, None, text, queue=False)
9.监听组件
-
输入组件变化,输出组件也变化
shellimport gradio as gr def tab(): mode_input=gr.Textbox( label='user',placeholder='input question') mode_output =gr.Textbox( label='user',placeholder='input question') # mode_input值改变,mode_output值也会跟着改变 # inputs:输入组件(输入参数),outputs:输出组件(输出参数) # fn:触发时调用的函数 mode_input.change(fn=lambda x:x, inputs=mode_input, outputs=mode_output) with gr.Blocks() as ui: gr.Markdown("# <center>🕵️♂️gradio test 🕵️♂️</center>") tab() ui.launch(server_name='127.0.0.1', server_port=8080,show_api=False, debug=True,share=True)
-
输入组件变化,对应的下拉框显示的值也变化
shell# data为pandas文件 mode_type= gr.Dropdown(types, label='type', value=types[0]) mode_title = gr.Dropdown(list(data[data['type']==types[0]]['title'].unique()), label='title') mode_type.change(fn=lambda x:gr.update(choices=list(data[data['type']==x]['title'].unique())), inputs=mode_type, outputs=mode_title)
10.输出流
shell
import time
import gradio as gr
def user(user_message, history):
return "", history + [[user_message, None]]
def bot(history):
bot_message = history[-1][0]
history[-1][1] = ""
for character in bot_message:
history[-1][1] += character
time.sleep(0.05)
yield history
def robot_tab():
chatbot = gr.Chatbot(label='robot')
msg = gr.Textbox( label='user',placeholder='input question')
button = gr.Button("generate answer")
# then: 监听事件
button.click(user, [msg, chatbot], [msg, chatbot], queue=False).then(bot, chatbot, chatbot)
clear = gr.Button("清除历史记录")
clear.click(lambda: None, None, chatbot, queue=False)
with gr.Blocks() as ui:
gr.Markdown("# <center>🕵️♂️ stream 🕵️♂️</center>")
robot_tab()
# 使用队列提交数据
ui.queue()
ui.launch(server_name='127.0.0.1', server_port=8080,show_api=False, debug=True,share=True)
11.template
-
模板:下代码在这个模板的基础下修改即可
shellimport cv2 import gradio as gr def update(mode_name,mode_age,mode_gender,mode_height): # image = image.convert('RGB') text=f'我叫{mode_name},性别{mode_gender},身高{mode_height},今年{mode_age}岁。' return text # return image def prompt_tab(): with gr.Column(): with gr.Row(): image = gr.Image(type='pil', label="Image") with gr.Column(): mode_name= gr.Radio(['小红', '小白', '小胖', '小黑'], label='name', value='小红') mode_age = gr.Radio(['18', '30', '40', '50'], label='age', value='18') mode_gender = gr.Radio(['女', '男'], label='gender', value='女') mode_height = gr.Dropdown(['160','165','170','175','180'], value='160', label='height') prompt = gr.Textbox(label="Prompt") button = gr.Button("Personal Information") button.click(fn=update, inputs=[mode_name,mode_age,mode_gender,mode_height], outputs=prompt) def image_analysis(input_image): output_image =input_image return output_image def analyze_tab(): with gr.Column(): with gr.Row(): # 创建输入组件 input_image = gr.Image(type='numpy', label="Image") with gr.Column(): # 创建输出组件 # output_image = gr.outputs.Image(type='pil', label="Image") output_image = gr.outputs.Image(type='numpy',label="Image") button = gr.Button("Analyze") button.click(image_analysis, inputs=[input_image], outputs=[output_image]) with gr.Blocks() as ui: gr.Markdown("# <center>🕵️♂️ gradio project 🕵️♂️</center>") with gr.Tab("Prompt"): prompt_tab() with gr.Tab("Analyze"): analyze_tab() ui.launch(server_name='127.0.0.1', server_port=8080,show_api=False, debug=True,share=True)