无法在 gotk3 应用程序中创建菜单栏

Unable to create a menubar in a gotk3 application

我正在使用 gotk3(一个为 GTK+3 提供 Go 绑定的项目)来编写一个简单的 GUI 应用程序。我想在应用程序中显示一个菜单栏,但现在它不显示任何菜单(在 MacOSX 和 Linux 上测试)。这是代码:

package main

import (
    "github.com/gotk3/gotk3/gtk"
    "log"
)

func main() {

    gtk.Init(nil)

    // creates window
    win, err := gtk.WindowNew(gtk.WINDOW_TOPLEVEL)
    if err != nil {
        log.Fatal("Unable to create window:", err)
    }
    win.SetDefaultSize(800, 600)
    win.Connect("destroy", func() {
        gtk.MainQuit()
    })

    // creates grid and label
    grid, err := gtk.GridNew()
    if err != nil {
        log.Fatal("Unable to create grid:", err)
    }
    label, _ := gtk.LabelNew("Hello, gotk3!")
    grid.Add(label)


    // creates menu
    menuBar, err := gtk.MenuBarNew()
    if err != nil {
        log.Fatal("Unable to create menubar:", err)
    }

    menu, err := gtk.MenuNew()
    if err != nil {
        log.Fatal("Unable to create menu:", err)
    }
    menu.SetName("File")

    menuItem, err := gtk.MenuItemNewWithLabel("Open")
    if err != nil {
        log.Fatal("Unable to create menuitem:", err)
    }
    menu.Append(menuItem)

    // attaches menubar to grid
    grid.Attach(menuBar, 0, 0, 200, 200)

    // shows window
    win.Add(grid)
    win.ShowAll()
    gtk.Main()
}

因为它不起作用,我不认为 Attach() 是执行此操作的正确功能。我从未使用过 GTK+,所以几乎不知道该做什么或去哪里看。有什么提示吗?

谢谢, 安德里亚

好的,我知道怎么做了。按照这个 example 我理解了在 GTK 上创建菜单所需的步骤。编辑的部分是:

    // creates menu
    menuBar, err := gtk.MenuBarNew()
    if err != nil {
        log.Fatal("Unable to create menubar:", err)
    }

    fileMenu, err := gtk.MenuNew()
    if err != nil {
        log.Fatal("Unable to create menu:", err)
    }

    fileMenuItem, err := gtk.MenuItemNewWithLabel("File")
    if err != nil {
        log.Fatal("Unable to create menuitem:", err)
    }

    openMenuItem, err := gtk.MenuItemNewWithLabel("Open")
    if err != nil {
        log.Fatal("Unable to create menuitem:", err)
    }

    fileMenuItem.SetSubmenu(fileMenu)
    fileMenu.Append(openMenuItem)
    menuBar.Append(fileMenuItem)

    gtkGrid.Attach(menuBar, 0, 0, 200, 200)
    win.Add(gtkGrid)

现在菜单显示在标签上(在 MacOsX 上),但至少显示了。