我需要一个名为rows的切片,其中包含许多fyne。容器结构。然后我需要将它们全部显示为窗口中的行。
我试过这样做:
rows := []*fyne.Container{}
rows = append(
rows,
container.New(
layout.NewGridLayout(4),
widget.NewLabel("Trigger"),
widget.NewLabel("Text"),
widget.NewLabel("Enter"),
widget.NewLabel("Active"),
),
)
w.SetContent(
container.New(
layout.NewGridLayout(1),
rows...
),
)
但我有
不能在容器的参数中使用行(类型[]*fyne.Container(作为类型[]fyne.CanvasObject。新
我不明白为什么要这样做:
w.SetContent(
container.New(
layout.NewGridLayout(1),
container.New(
layout.NewGridLayout(4),
widget.NewLabel("Trigger"),
widget.NewLabel("Text"),
widget.NewLabel("Enter"),
widget.NewLabel("Active"),
),
container.New(
layout.NewGridLayout(4),
widget.NewLabel("Trigger"),
widget.NewLabel("Text"),
widget.NewLabel("Enter"),
widget.NewLabel("Active"),
),
),
)
它运行良好。。。它不应该是相同的传递单个结构还是[]类型。。。?
谢谢!
该方法需要一个fyne.CanvasObject
s的切片,这是结构体fyne.Container
实现的接口。
即使结构类型满足接口,也不能用结构类型的切片代替接口类型的切片。
您的切片应该是接口类型,而不是结构类型。然后,您可以将满足接口的对象附加到该切片:
rows := []fyne.CanvasObject{}
rows = append(
rows,
container.New(
layout.NewGridLayout(4),
widget.NewLabel("Trigger"),
widget.NewLabel("Text"),
widget.NewLabel("Enter"),
widget.NewLabel("Active"),
),
)