将项目动态添加到列表小部件

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()
        ,

【讨论】:

以上是关于将项目动态添加到列表小部件的主要内容,如果未能解决你的问题,请参考以下文章

Flutter - 在无状态小部件中动态地将项目添加到 ListView

动态创建列表并在每个新创建的元素中添加 HTML 标签

访问动态添加的小部件 (pyqt)

在颤动中单击按钮时添加小部件时处理动态复选框列表

如何将小部件动态添加到网格?

如何将 Dijit 小部件动态添加到 Dojo 表单?