如何解决将项目动态添加到列表小部件
我正在使用名为 Fyne for Go 的 GUI 框架。如何将项目动态添加到 List 小部件使用的数组?代码:
var componentsList = []string{"test1: test1"}
func main() {
app := app.New()
window := app.NewWindow("Delta Interface")
componentsTree := widget.NewList(
func() int {
return len(componentsList)
},func() fyne.CanvasObject {
return widget.NewLabel("template")
},func(i widget.ListItemID,o fyne.CanvasObject) {
o.(*widget.Label).SetText(componentsList[i]) // i need to update this when componentsList was updated
})
nameEntry := widget.NewEntry()
typeEntry := widget.NewEntry()
form := &widget.Form{
Items: []*widget.FormItem{
{Text: "Name",Widget: nameEntry},{Text: "Type",Widget: typeEntry}},OnSubmit: func() {
componentsList = append(componentsList,nameEntry.Text+": "+typeEntry.Text) // append an item to componentsList array
},}
layout := container.New(layout.NewGridWrapLayout(fyne.NewSize(350,500)),componentsTree,form)
window.SetContent(layout)
window.Resize(fyne.NewSize(800,600))
window.ShowAndRun()
}
- 我需要在 componentsList 更新时更新它。
- 向 componentsList 数组追加一项
解决方法
更新列表呈现的数据后,您只需调用 Refresh()
。
因此,只需将您的 OnSubmit
函数更新为:
OnSubmit: func() {
componentsList = append(componentsList,nameEntry.Text+": "+typeEntry.Text)
componentsTree.Refresh()
},
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。