VBox布局02
最常用的布局是layout.BoxLayout,它有两种变体,水平和垂直。box布局将所有元素排列在单行或单列中,并带有可选的空格以帮助对齐。
一步一步实现一个如下界面布局,这个界面可以使用VBox布局来实现。
这次添加了2个复选框。
添加复选框代码
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()
}
效果如下:
widget.NewCheck()函数的第一个参数是一个string类型,第二个参数是一个函数,用来触发对应的勾选和取消操作逻辑。
container.NewVBox(input, check1, check2)
3个画布对象从上到下排列成1列。
添加button
package main
import (
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/app"
"fyne.io/fyne/v2/canvas"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/theme"
"fyne.io/fyne/v2/widget"
"image/color"
)
func main() {
a := app.New()
w := a.NewWindow("Newlock")
input := widget.NewEntry()
input.SetPlaceHolder("Enter Password Length")
check1 := widget.NewCheck("Upper Case Letters", func(value bool) {})
check1.Checked = true
check2 := widget.NewCheck("Allow Reapeating Charcters", func(value bool) {})
check2.Checked = true
text := canvas.NewText("", color.Black)
text.TextSize = 16
btn := widget.NewButton("Generate", func() {
text.Text = "55d##$#..s##SFFF("
text.Refresh()
})
copybtn := widget.NewButtonWithIcon("Copy Password", theme.ContentCopyIcon(), func() {
w.Clipboard().SetContent(text.Text)
})
c := container.NewVBox(
input,
check1,
check2,
text,
btn,
copybtn)
w.SetContent(c)
w.Resize(fyne.NewSize(400, 300))
w.ShowAndRun()
}
效果如下: