fyne 从一片容器中创建容器中的行
fyne create rows in a container from a slice of containers
我需要一个名为 rows 的切片,其中包含许多 fyne.Container 结构。
然后我需要将它们全部显示为 window.
中的行
我试过这样做:
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...
),
)
但我明白了
cannot use rows (type []*fyne.Container) as type []fyne.CanvasObject in argument to container.New
而且我不明白为什么要这样做:
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"),
),
),
)
它工作正常...它不应该是相同的传递单个结构或 []type...吗?
谢谢!
该方法需要一片 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"),
),
)
我需要一个名为 rows 的切片,其中包含许多 fyne.Container 结构。 然后我需要将它们全部显示为 window.
中的行我试过这样做:
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...
),
)
但我明白了
cannot use rows (type []*fyne.Container) as type []fyne.CanvasObject in argument to container.New
而且我不明白为什么要这样做:
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"),
),
),
)
它工作正常...它不应该是相同的传递单个结构或 []type...吗?
谢谢!
该方法需要一片 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"),
),
)