无法在gotk3应用程序中创建菜单栏
问题描述:
我正在使用gotk3(一个为GTK + 3提供Go绑定的项目)来编写简单的GUI应用程序。我想在应用程序中显示一个菜单栏,但现在它不显示任何菜单(在MacOSX和Linux上都进行了测试)。这是代码:无法在gotk3应用程序中创建菜单栏
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 +,所以几乎不知道该做什么或在哪里寻找。任何提示?
感谢, 安德烈
答
OK,我发现了如何做到这一点。继此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上)的菜单,但至少它的显示。
嘿安德烈,对不起,我不能帮助你正在使用的软件包,我只是想提出这个替代方案 - 我一直在使用最近的跨平台用户界面,取得了巨大的成功(无隶属关系) - https:/ /github.com/sciter-sdk/go-sciter - 可能值得一看,也使用gtk for mac/nix,但也提供了赢得支持,并附带数百个示例,并有一个非常有用的论坛 – WebweaverD