Gradio之blocks灵活搭建页面

news/2025/2/14 7:07:44/

这里写目录标题

  • 搭建一个UI界面
    • 搭建上半部分的框架
    • 比例调节以及其他效果
    • 搭建下半部分左边部分
    • 搭建下半部分右边部分
    • 拓展-CSS的应用
  • 使用标签搭建第二个页面
    • 示例
  • 补充
    • Accordion
    • Group()

搭建一个UI界面

搭建上半部分的框架

如下图,我们想要基本还原下图右边的UI界面,首先搭建上半部分
在这里插入图片描述
导包之后,
第一个with,要with上Blocks,并重命名:
with gr.Tab(label=“txt.img”):
(之后,这里是创建了一个标签,就是右图中那个一整个页面的底层,可以看到当前在第一个标签下,而label的值,就是标签上标注)
with gr.Row():
(从这里开始,要进行布局了,基本上每个页面都是由多个行布局和列布局交错配合形成的,这里,上半部分整体是一个水平布局,所以,以Row引导)
with gr.Column():

with gr.Column():

with gr.Column():

(之后三个垂直布局,因为在整个水平布局里面,可以拆分为三个垂直布局,这三个布局会水平放置,因为他们在水平布局之下)
第一个垂直布局里面,加了两个文本框(属性lines表示其高度,label是其原始标注内容)
第二个垂直布局里面,加了四个按钮(属性value是其原始标注内容)
第三个垂直布局里面:
gr.Button(value=“Generate”)
(首先是一个按钮,value是其原始标注内容)
with gr.Row():
(之后是一个水平布局,说明在按钮下面是一个水平布局)
将两个下拉框放入水平布局(属性第一个参数是数组,表示下拉框的选项;第二个参数是label,是其上方的原始标注内容)

最终呈现的效果如下图:
在这里插入图片描述

比例调节以及其他效果

可以看到,我们目前搭建出来的,是三个垂直布局五五开的效果,而我们的目标图并不是这样,所以,需要进行比例的微调
在这里插入图片描述
对于垂直布局,他有一个属性:scale,他可以调节与之相邻的垂直布局的比例,比如,上面这种写法,就是15:1:6的比例布局
,那么效果是:
在这里插入图片描述
可以看到,第二个垂直布局和第三个垂直布局,似乎还是五五开的状态。接下来解决这个问题:

出现这个问题主要是因为很多组件都有他的最小宽度,比如,我们ctrl+左键,进入Textbox组件内,可以看到其最小宽度是160
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
同样的,对于column,也有他的最小宽度。
在这里插入图片描述
所以,我们在这里调整其最小宽度,只要保证最小宽度比我们想要设置的宽度小就可以了,我们调为1,就已经是最小的宽度了,基本上调为1之后,不会限制任何比例对宽度的下调了

最后的效果是这样:
在这里插入图片描述
但是Generate这个按钮,他的颜色,包括他的高度,都需要进行调整:
在这里插入图片描述
首先,对其variant属性进行设置,设置为primary,之后设置其scale=1(可以让其撑大其高度)
tips:我们可以通过ctrl+左键,进入variant中,查看可以设置为哪些值,以及其默认值是谁,如下图
在这里插入图片描述

搭建下半部分左边部分

在这里插入图片描述

可以看到上来就是一个Row,
(表明,下半部分整个是个水平布局)
with gr.Column():
(水平布局里面整体分为两个垂直布局,现在是第一个垂直布局)
而在该垂直布局里面,是多个水平布局的堆积
with gr.Row():

with gr.Row():

with gr.Row():

checkboxgroup
dropdown4
(在诸多水平布局之间,混入了几个没有写任何布局的组件,那是因为该行就那一个组件,所以,在只有一个组件,且目前在垂直布局的大引导下,也就无需再写一个水平布局了,但是还是建议写上,便于代码的阅读和维护)

搭建下半部分右边部分

在这里插入图片描述

可以看到,最后的效果,有一点小bug,因为那一行六个按钮,本来是写在一个row内的,也就是本就是一行,现在怎么会变成两行,
问题还是那个,每个按钮有他的最小宽度,我们设置其最小宽度为1,就不会干扰我们的设置了:
在这里插入图片描述

拓展-CSS的应用

在这里插入图片描述
我们现在有一个css文件,对样式进行更加深度的自定义,例如,上图中利用css,对所有样式名为btn的组件,进行css样式设置
在这里插入图片描述
我们在blocks内,将css加载进来,之后对四个按钮设置其样式名,用属性elem_classes=“btn”,这样,这四个按钮,就可以生效css中.btn的设置了,效果如下图:
在这里插入图片描述

使用标签搭建第二个页面

示例

在这里插入图片描述
在第一个Tab之后,
with gr.Tab(label=“标注”):
可以生成第二个标签,这样,点击第二个标签,他就是一个全新的页面,如下图:
在这里插入图片描述

补充

Accordion

使用方法:
with gr.Accordion():
在这里插入图片描述
在with gr.Accordion():下面的组件,可以被选择被展示还是隐藏:
在这里插入图片描述

在这里插入图片描述

Group()

在这里插入图片描述
在六个按钮之前放一个组,该组内有两个按钮,我们来看看什么效果:
在这里插入图片描述
可以看到两个button捏在一起了


http://www.ppmy.cn/news/1456662.html

相关文章

iOS--runloop的初步认识

runloop的初步认识 简单认识runloopEvent looprunloop其实就是个对象NSRunloop和CFRunLoopRef的依赖关系runloop与线程runloop moderunloop sourceCFRunLoopSourceCFRunLoopObserverCFRunLoopTimer runloop的实现runloop的获取添加ModeCFRunLoopAddCommonMode 添加Run Loop Sou…

Ansible——lookup,过滤器

文章目录 Ansible——lookup,过滤器lookup读取文件lookup生成随机密码lookup读取环境变量lookup读取Linux命令的执行结果lookup读取template变量替换后的文件lookup读取配置文件lookup读取DNS解析的值 过滤器过滤器使用的位置过滤器对普通变量的操作过滤器对文件路径的操作过滤…

复现SMO算法:序列最小优化的启发式方法【三、算法原理揭秘-2】

接下来的内容将转向SMO算法的第二个核心组成部分——选择要优化的乘数的启发式方法。在这篇博客中,我们将探讨算法如何通过启发式选择策略高效地识别和更新拉格朗日乘数。通过对比直接优化的分析方法和启发式方法的策略选择,我们能够更全面地理解SMO算法…

详解MySQL常用的数据类型

前言 MySQL是一个流行的关系型数据库管理系统,它支持多种数据类型,以满足不同数据处理和存储的需求。理解并正确使用这些数据类型对于提高数据库性能、确保数据完整性和准确性至关重要。本文将详细介绍MySQL中的数据类型,包括数值类型、字符…

口感与风味的完善结合:精酿啤酒的多样风格

啤酒的世界是丰富多彩的,不同的啤酒有着各自与众不同的口感和风味。而Fendi club啤酒,作为精酿啤酒的代表,以其多样化的风格和卓着的口感,吸引了无数啤酒爱好者的目光。 Fendi club啤酒的多样风格,首先体现在其原料的选…

如何迁移Windows PC数据到统信UOS 1070

原文链接:如何迁移Windows PC数据到统信UOS 1070 Hello,大家好啊!随着统信UOS 1070的推出,越来越多的用户和企业选择迁移到这个基于Linux的操作系统,以享受其安全性和稳定性的优势。今天,我们将探讨如何使用…

【开发工具】pythontutor——在线内存可视化工具

笔者在学习RISC-V时,希望找到一款可视化的内存工具,遗憾目前还未找到。发现了pythontutor这个网站,可以对C、python等多种语言进行内存可视化。结果似乎是x86架构的,符合小端存储。 贴一下网址,原准备依据开源版本进行…

文本转图表的AI工具-Chart-GPT

Chart-GPT Chart-GPT一款基于 GPT 实现的开源工具,可在几秒内,将文本快速转换为各种图表。用户只需在输入字段中输入数据说明和所需的图表类型,Chart-GPT的后台生成器即可建出多种类型的图表,包括条形图、折线图、组合图、散点图、…