我正在使用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 +,因此几乎不知道该做什么或在哪里看。任何提示?
谢谢, 安德烈
答案 0 :(得分:0)
好的,我发现了怎么做。在此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上),但至少显示了它。