如何制作网格/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).

的建议进行操作