golang fyne 创建列表 widget.NewList

发布时间 2023-09-11 18:21:35作者: 芹菜是一根葱

环境: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 }