go - 如何动态添加列到 container.NewGridWithColumns()
问题描述
如何在 Go/Fyne 中向 container.NewGridWithColumns 添加额外的列?
我在 ColumnGrid 中呈现了许多项目(容器)。然后通过一个对话框我想添加一个项目。问题是我找不到扩展原始 ColumnGrid 的方法。
我的代码:
func main() {
a := app.New()
w = a.NewWindow("myApp")
window = container.NewBorder(toolbar(), footer(), nil, nil, content())
w.SetContent(window)
w.ShowAndRun()
}
func content() *fyne.Container {
top := topRow()
bottom := bottomRow()
return container.NewGridWithRows(2, top, bottom)
}
var items []*fyne.Container
func bottomRow() *fyne.Container {
items = nil
db := sql.NewDB()
list, err := db.List()
if err != nil {
//handle error
}
for _, l := range list {
items = append(items, renderChart(l))
}
ct = container.NewGridWithColumns(len(items))
for _, item := range items {
ct.Add(item)
}
return ct
}
func dlgAdd() {
entry := widget.NewEntry()
entry.PlaceHolder = "name"
e := container.NewGridWithRows(2, entry)
d := dialog.NewCustomConfirm(
"Add Item",
"Add",
"Cancel",
e,
func(v bool) {
if !v {
//Cancelled
return
}
if entry.Text == "" {
//without input
return
}
//write entry.Text to db
db := sql.NewDB()
err := db.AddItem(entry.Text)
if err != nil {
return
}
//report succes
i := dialog.NewInformation("Succes", fmt.Sprintf("Item %s added", entry.Text), w)
i.Show()
i.SetOnClosed(func() {
这是问题,如何向容器 ct 添加额外的列,然后将对话框中的项目添加到新列这将不起作用
ct = container.NewGridWithColumns(len(ct.Objects) + 1)
items = append(items, renderChart(entry.Text))
for _, item := range items {
ct.Add(item)
}
这也行不通
bottomRow()
w.Canvas().Refresh(window)
})
}, w)
d.Show()
I am really stuck here.
解决方案
是的,Container.Add
是解决方案,您只需要保存对的引用Container
而不是创建新的引用。取决于Layout
它可能并不总是需要更改它,例如,GridWithRows(...)
如果项目数量增加(因为行数是固定的),将继续添加列。
推荐阅读
- apollo - 使用 apollo 缓存数据作为 graphql 查询参数
- ios - iOS 13 - UISplitViewController 调整大小错误
- python - 无法找到凭证 - 在 ubuntu 上使用 Python 访问 AWS 秘密管理器
- python-3.x - 处理 ResultProxy 对象
- matplotlib - 制作带有为每个点指定的标准偏差/置信区间的 seaborn 线图
- azure-devops-rest-api - 是否可以使用否定过滤器查询 Azure DevOps REST API 中的构建?
- javascript - 按下“开始”时如何修复秒表递增?
- windows - 是否可以在执行时修改自定义协议参数?
- javascript - 循环 json 并在 nodejs 中获取特定值
- sql - 尝试基于安全权限验证信息