如何制作网格/Fyne/Golang
How to make a grid / Fyne / Golang
我正在向 Fyne 申请。
我需要创建一个网格,其中左列将固定,右列将拉伸。一般情况下,左边是菜单,右边是主块(下面是预期的截图)。
我阅读了文档 https://developer.fyne.io/container/grid 但仍然不明白该怎么做。请帮助我。
Grid
package main
import (
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/app"
)
func main() {
application := app.New()
window := application.NewWindow("title")
window.Resize(fyne.NewSize(1920, 1080))
window.ShowAndRun()
}
可以查看Fyne的demo应用
$ go get fyne.io/fyne/v2/cmd/fyne_demo
$ fyne_demo
根据您的描述,这里是一个示例,左侧是菜单,右侧是主块:
package main
import (
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/app"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/widget"
)
func main() {
a := app.New()
w := a.NewWindow("Fyne Demo")
w.SetMaster()
content := container.NewMax()
title := widget.NewLabel("Component name")
intro := widget.NewLabel("An introduction would probably go\nhere, as well as a")
intro.Wrapping = fyne.TextWrapWord
tutorial := container.NewBorder(
container.NewVBox(title, widget.NewSeparator(), intro), nil, nil, nil, content)
split := container.NewHSplit(makeNav(), tutorial)
split.Offset = 0
w.SetContent(split)
w.Resize(fyne.NewSize(640, 460))
w.ShowAndRun()
}
func makeNav() fyne.CanvasObject {
tree := widget.NewTreeWithStrings(menuItems)
return container.NewBorder(nil, nil, nil, nil, tree)
}
var menuItems = map[string][]string{
"": {"welcome", "collections", "advanced"},
"collections": {"list", "table"},
}
输出:
如果您在 go path 源上探索他们的演示,您可以看到 (makeNav) 的完整功能,这将使事情变得可点击。
并制作(左栏固定,右栏拉伸):
split.Offset = 0
听起来您正在制作边框布局(附在边上的东西)。如果是这样,那么您可以将左侧设置为最小尺寸,并通过以下方式将内容拉伸以填充:
container.NewBorder(nil, nil, left, nil, content)
(参数为上、下、左、右、中)。
如果您希望用户控制拆分,请按照其他地方和用户 container.NewHSplit(left, right)
.
的建议进行操作
我正在向 Fyne 申请。
我需要创建一个网格,其中左列将固定,右列将拉伸。一般情况下,左边是菜单,右边是主块(下面是预期的截图)。
我阅读了文档 https://developer.fyne.io/container/grid 但仍然不明白该怎么做。请帮助我。
Grid
package main
import (
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/app"
)
func main() {
application := app.New()
window := application.NewWindow("title")
window.Resize(fyne.NewSize(1920, 1080))
window.ShowAndRun()
}
可以查看Fyne的demo应用
$ go get fyne.io/fyne/v2/cmd/fyne_demo
$ fyne_demo
根据您的描述,这里是一个示例,左侧是菜单,右侧是主块:
package main
import (
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/app"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/widget"
)
func main() {
a := app.New()
w := a.NewWindow("Fyne Demo")
w.SetMaster()
content := container.NewMax()
title := widget.NewLabel("Component name")
intro := widget.NewLabel("An introduction would probably go\nhere, as well as a")
intro.Wrapping = fyne.TextWrapWord
tutorial := container.NewBorder(
container.NewVBox(title, widget.NewSeparator(), intro), nil, nil, nil, content)
split := container.NewHSplit(makeNav(), tutorial)
split.Offset = 0
w.SetContent(split)
w.Resize(fyne.NewSize(640, 460))
w.ShowAndRun()
}
func makeNav() fyne.CanvasObject {
tree := widget.NewTreeWithStrings(menuItems)
return container.NewBorder(nil, nil, nil, nil, tree)
}
var menuItems = map[string][]string{
"": {"welcome", "collections", "advanced"},
"collections": {"list", "table"},
}
输出:
如果您在 go path 源上探索他们的演示,您可以看到 (makeNav) 的完整功能,这将使事情变得可点击。
并制作(左栏固定,右栏拉伸):
split.Offset = 0
听起来您正在制作边框布局(附在边上的东西)。如果是这样,那么您可以将左侧设置为最小尺寸,并通过以下方式将内容拉伸以填充:
container.NewBorder(nil, nil, left, nil, content)
(参数为上、下、左、右、中)。
如果您希望用户控制拆分,请按照其他地方和用户 container.NewHSplit(left, right)
.