将项目动态添加到列表小部件
Posted
技术标签:
【中文标题】将项目动态添加到列表小部件【英文标题】:Dynamically add an item to a List widget 【发布时间】:2021-06-01 01:50:48 【问题描述】:我正在使用名为 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()
我在上面代码的cmets中写了我需要做的事情:
-
我需要在 componentsList 更新时更新它。
向 componentsList 数组追加一个项目
【问题讨论】:
【参考方案1】:更新列表呈现的数据后,您只需调用Refresh()
。
因此,只需将您的 OnSubmit
函数更新为:
OnSubmit: func()
componentsList = append(componentsList, nameEntry.Text+": "+typeEntry.Text)
componentsTree.Refresh()
,
【讨论】:
以上是关于将项目动态添加到列表小部件的主要内容,如果未能解决你的问题,请参考以下文章