环境:go fyne
要求:添加列表到水平分割容器中,点击左边的列表,在窗口右边显示列表名称
效果:
实现:
1 package main 2 3 import ( 4 "fmt" 5 "fyne.io/fyne/v2" 6 "fyne.io/fyne/v2/app" 7 "fyne.io/fyne/v2/container" 8 "fyne.io/fyne/v2/widget" 9 ) 10 11 func main() { 12 // 创建 Fyne 应用实例 13 a := app.New() 14 15 // 创建窗口 16 w := a.NewWindow("Fyne Demo") 17 18 // 创建两个标签组件 19 label1 := widget.NewLabel("Welcome to China") 20 label2 := widget.NewLabel("city:") 21 22 var data = []string{"Beijing", "Shenzhen", "Shanghai"} 23 // 创建列表 24 list := widget.NewList( 25 func() int { 26 return len(data) 27 }, 28 func() fyne.CanvasObject { 29 return widget.NewLabel("template") 30 }, 31 func(i widget.ListItemID, o fyne.CanvasObject) { 32 o.(*widget.Label).SetText(data[i]) 33 }) 34 list.OnSelected = func(id widget.ListItemID) { 35 label2.SetText("city:" + data[id]) // 更新右侧的标签内容 36 fmt.Println(data[id]) 37 } 38 // 设置选择的选项 39 list.Select(0) 40 41 tutorial := container.NewVBox( 42 label1, 43 label2, 44 ) 45 46 // 创建水平分割容器,将两个容器放置其中 47 split := container.NewHSplit(list, tutorial) 48 split.Offset = 0.2 49 50 // 设置窗口内容为水平分割容器 51 w.SetContent(split) 52 53 // 设置窗口尺寸 54 w.Resize(fyne.NewSize(640, 460)) 55 56 // 显示窗口并运行应用 57 w.ShowAndRun() 58 }