首页 > 其他分享 >fyne的VBox布局

fyne的VBox布局

时间:2024-06-21 18:30:42浏览次数:22  
标签:container 布局 fyne VBox objects input Container layout

fyne的VBox布局

最常用的布局是layout.BoxLayout,它有两种变体,水平和垂直。box布局将所有元素排列在单行或单列中,并带有可选的空格以帮助对齐。

一步一步实现一个如下界面布局,这个界面可以使用VBox布局来实现。

在这里插入图片描述

代码1

package main

import (
	"fyne.io/fyne/v2"
	"fyne.io/fyne/v2/app"
	"fyne.io/fyne/v2/container"
	"fyne.io/fyne/v2/widget"
)

func main() {
	a := app.New()
	w := a.NewWindow("Newlock")
	input := widget.NewEntry()
	input.SetPlaceHolder("Enter Password Length")
	c := container.NewVBox(input)
	w.SetContent(c)
	w.Resize(fyne.NewSize(400, 300))
	w.ShowAndRun()
}

效果如下:

在这里插入图片描述

代码2

package main

import (
	"fyne.io/fyne/v2"
	"fyne.io/fyne/v2/app"
	"fyne.io/fyne/v2/widget"
)

func main() {
	a := app.New()
	w := a.NewWindow("Newlock")
	input := widget.NewEntry()
	input.SetPlaceHolder("Enter Password Length")
	w.SetContent(input)
	w.Resize(fyne.NewSize(400, 300))
	w.ShowAndRun()
}

效果如下:

在这里插入图片描述

这2份代码的区别是w.SetContent(),第一个被容器包裹,第二个未被容器包裹。

分析NewVBox()

分析container.New()和container.NewWithoutLayout():

// Package container provides containers that are used to lay out and organise applications.
package container

import (
	"fyne.io/fyne/v2"
)

// New returns a new Container instance holding the specified CanvasObjects which will be laid out according to the specified Layout.
//
// Since: 2.0
func New(layout fyne.Layout, objects ...fyne.CanvasObject) *fyne.Container {
	return &fyne.Container{Layout: layout, Objects: objects}
}

// NewWithoutLayout returns a new Container instance holding the specified CanvasObjects that are manually arranged.
//
// Since: 2.0
func NewWithoutLayout(objects ...fyne.CanvasObject) *fyne.Container {
	return &fyne.Container{Objects: objects}
}

New()函数的第一个参数是layout布局参数,其它参数是canvas对象。

NewWithoutLayout()函数没有layout布局参数。

fyne.Container结构体如下:

// Container is a CanvasObject that contains a collection of child objects.
// The layout of the children is set by the specified Layout.
type Container struct {
	size     Size     // The current size of the Container
	position Position // The current position of the Container
	Hidden   bool     // Is this Container hidden

	Layout  Layout // The Layout algorithm for arranging child CanvasObjects
	lock    sync.Mutex
	Objects []CanvasObject // The set of CanvasObjects this container holds
}

这个结构体包含一个Layout布局和一个CanvasObject数组。

container.NewVBox()源码:

// NewVBox creates a new container with the specified objects and using the VBox layout.
// The objects will be stacked in the container from top to bottom and always displayed
// at their vertical MinSize. Use a different layout if the objects are intended
// to be larger then their vertical MinSize.
//
// Since: 1.4
func NewVBox(objects ...fyne.CanvasObject) *fyne.Container {
	return New(layout.NewVBoxLayout(), objects...)
}
container.NewVBox(input)
//可以替换为
container.New(layout.NewVBoxLayout(), input)

layout.NewSpacer()返回一个可以填充垂直和水平空间的间隔对象。这主要用于box布局。

canvas.NewText()和widget.NewLabel()区别

  • canvas.NewText(): 在fyne库中,canvas.Text是一个低级的文本绘制对象,它允许你更精细地控制文本的布局、样式和渲染。
  • widget.NewLabel(): 这与更高级的GUI小部件(widgets)相关。Label是一个预制的、可重用的界面元素,它封装了文本的显示,并可能还包含一些额外的功能,如响应鼠标点击或键盘输入。

标签:container,布局,fyne,VBox,objects,input,Container,layout
From: https://blog.csdn.net/shulu/article/details/139834176

相关文章

  • fyne的border布局02
    border布局02边框布局可能是最广泛用于构建用户界面的布局,因为它允许将项目定位在中心元素周围,而中心元素将扩展以填充空间。实现如下一个界面布局:实现代码如下:packagemainimport( "edgevpndemo/resources" "fyne.io/fyne/v2" "fyne.io/fyne/v2/app" "fyne.i......
  • 【vue】可视化大屏实现固定比例布局(不错位)
    背景最初方案是使用dataV中的大屏自适应组件,后续发现dataV在不同显示器分辨率下的效果会不一致导致图表内容错位等问题;后续查找资料重新写自适应。组件封装resizeMixin.js//*默认缩放值constscale={width:'1',height:'1',};//*设计稿尺寸(px)cons......
  • Web应用课 2.4 CSS——flex、响应式布局
    flex布局主轴方向flex-directionCSSflex-direction属性指定了内部元素是如何在flex容器中布局的,定义了主轴的方向(正方向或反方向)。/*文本排成行的方向*/flex-direction:row;/*类似于<row>,但方向相反*/flex-direction:row-reverse;/*文本排成列的方向*/f......
  • 以前功能正常的代码突然出现布局问题
    我的网站使用相同的CSS文件已超过十年,从未出现过任何问题,但大约24小时前,我的网站布局出现了乱码,尽管我只是为我试图用于大写字母的新图片添加了一个单独的类,迄今为止我只在一个页面上进行了测试,但整个网站(每个页面)都出现了乱码,即使我恢复了原始CSS文件且未做任何新的修改,情......
  • css布局方式汇总
    css布局解决方案文章目录css布局解决方案水平居中布局1.text-algin:center使用场景原理优点与缺点2.margin:0auto原理优点和缺点3.inline-block+text-align属性配合使用原理优点和缺点4.table配合margin属性使用原理优点和缺点5.absolute+transform属性的tran......
  • 响应式布局mediaquery使用,鸿蒙NEXT星河版
    一、导入方法,定义响应式接口//组件的封装importmediaqueryfrom'@ohos.mediaquery'exportinterfaceLandType{isLandScape:boolean}二、监听当前是否是横屏状态//监听当前是否是横屏状态@StatelandRes:LandType={isLandScape:false}liste......
  • div+css布局实现个人网页设计(HTML期末作业)
    ......
  • QT界面布局
    一.按钮组按钮组主要是设置控件,美化布局,在UI文件中可以找到Buttons的按钮组控件布局注意:任何一组控件的添加务必先编辑,否则在代码编写中无法识别。1.QPushButton普通按钮常用于设置自己常用的登录退出及嵌套其他窗口的按键2.QToolButton工具按钮作用:常用于显示图片,可......
  • 安卓应用开发——Android Studio中通过id进行约束布局
    在Android开发中,布局通常使用XML文件来描述,而约束(如相对位置、大小等)可以通过多种方式实现,但直接使用ID进行约束并不直接对应于Android的传统布局系统(如LinearLayout、RelativeLayout等)。然而,从AndroidStudio3.0开始,引入了ConstraintLayout,它允许你通过ID来定义视图之间的约......
  • 掌握这12种常见网页布局设计方法,提升你的设计技能
    网页布局在整个网页设计中起着至关重要的作用。不同的网页布局设计会产生不同的视觉效果,直接影响浏览者对网页的第一印象。即时设计认为,网页布局在很大程度上决定了网站用户如何与网页内容互动。好的网页设计具有很强的实用性和适应性,所以在布局上要选择合适的设计,让用户满意。......