fyne的border布局02

border布局02

边框布局可能是最广泛用于构建用户界面的布局,因为它允许将项目定位在中心元素周围,而中心元素将扩展以填充空间。

实现如下一个界面布局:

在这里插入图片描述

实现代码如下:

package main

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

const welcomeMessage string = `
# Welcome

Welcome to the EdgeVPN gui. This is a simple utility to control EdgeVPN instances in your system.

This application can be safely closed. VPN connection will keep running in the background.
`

func main() {
	app := app.New()
	w := app.NewWindow("EdgeVPN")
	welcomeText := widget.NewRichTextFromMarkdown(welcomeMessage)

	addVPNbtn := widget.NewButtonWithIcon("Add VPN",
		theme.ContentAddIcon(),
		func() {})
	addVPNbtn.Importance = widget.HighImportance

	generateVPNbtn := widget.NewButtonWithIcon("Generate new VPN",
		theme.DocumentCreateIcon(),
		func() {})

	importVPNbtn := widget.NewButtonWithIcon("Import new VPN",
		theme.DownloadIcon(),
		func() {})

	downloadEdgeVPNbtn := widget.NewButtonWithIcon("Manage EdgeVPN versions",
		resources.GetResource(resources.EdgeVPNIcon, "manage"),
		func() {})

	noVPN := widget.NewLabel("No VPN found in the system!")

	aboutButton := widget.NewButtonWithIcon("About",
		theme.InfoIcon(),
		func() {})

	w.SetContent(
		container.NewBorder(
			welcomeText,
			nil,
			nil,
			nil,
			container.NewCenter(container.NewGridWithColumns(
				1,
				noVPN, addVPNbtn, generateVPNbtn, importVPNbtn, downloadEdgeVPNbtn,
				aboutButton,
			)),
		),
	)
	w.Resize(fyne.NewSize(640, 640))

	w.Show()
	app.Run()

}

使用了3种container进行组合。

还可以使用如下container,效果是一样的:

w.SetContent(
	container.NewBorder(
		welcomeText,
		nil,
		nil,
		nil,
		container.NewCenter(container.NewVBox(
			noVPN, addVPNbtn, generateVPNbtn, importVPNbtn, downloadEdgeVPNbtn,
			aboutButton,
		)),
	),
)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shulu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值