gpt4 book ai didi

go - 使用 Fyne 将列表小部件绑定(bind)到结构 slice

转载 作者:行者123 更新时间:2023-12-04 17:18:56 25 4
gpt4 key购买 nike

我有一个数据项集合,我正在尝试使用 Fyne 将一个 GUI 放在一起来编辑该集合。我已经想出如何使用绑定(bind)来显示集合,但我不知道如何才能编辑这些项目。

这是我所拥有的稍微简化的版本:

type Item struct {
Name string
Slot1 bool
Slot2 bool
}

type ItemList struct {
Items []Item
}

我不会展示它们,但我已经为这两种类型添加了方法,以便前者实现 binding.DataItem,后者实现 binding.DataList .

现在显示:

var dataList := ItemList{
...
...
}

list := NewListWithData(
dataList,
func() fyne.CanvasObject {
label := widget.NewLabel("placeholder")
c1 := widget.NewCheck("", func(bool) {})
c2 := widget.NewCheck("", func(bool) {})
return container.NewHBox(label, c1, c2)
},
func(di binding.DatItem, obj fyne.CanvasObject) {
ct := obj.(*fyne.Container)
label := ct.Objects[0].(*widget.Label)
c1 := ct.Objects[1].(*widget.Check)
c2 := ct.Objects[2].(*widget.Check)
item := di.(Item)
label.SetText(item.Name)
c1.SetChecked(item.Slot1)
c2.SetChecked(item.Slot2)
},
}

我怀疑此时我需要做一些类似 values := binding.BindStruct(&item) 的事情,但如果我这样做,我不确定如何将它们放入标记和检查小部件。

最佳答案

您需要将输入控件连接到绑定(bind)(结构的项目通过 di 传入)。如果您已经在 Item 中拥有可以访问绑定(bind)的子项目的方法,那么您就完成了大部分工作。

要连接编辑功能,请将 label.SetText(...) 替换为 label.Bind(...)c1.SetChecked(。 ..)c1.Bind(...)。这将同时设置当前值和

关于go - 使用 Fyne 将列表小部件绑定(bind)到结构 slice ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67346900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com