Golang Gtk+3教程:GtkBuilder使用XML構建UI
阿新 • • 發佈:2018-11-06
github activate 得到 commons const fat 創建 gtkbutton UNC
在這節我將介紹GtkBuilder,其使我們可以從一個描述界面的xml文件構建UI。而這個文件我們可以使用Glade生成,這會極大的方便我們編輯用戶界面。這節我們會使用到這麽一個XML文件,名字為Builder.ui
(可以在本文後面看到,請創建並放在項目下)。習慣上,我們使用.ui
作為擴展名。
示例:
package main import ( "github.com/gotk3/gotk3/glib" "github.com/gotk3/gotk3/gtk" "log" "os" ) func main() { const appId = "com.nayoso.example" app, _ := gtk.ApplicationNew(appId, glib.APPLICATION_FLAGS_NONE) app.Connect("activate", func() { onActivate(app) }) app.Run(os.Args) } //-- 在開始我們還是使用我們熟悉的代碼 func onActivate(application *gtk.Application) { if builder, err := gtk.BuilderNewFromFile("builder.ui"); err != nil { //從文件中創建Builder log.Fatal(err) } else if winObj, err := builder.GetObject("window"); err != nil { //從文件中讀取window對象,其實際上是Gobject log.Fatal(err) } else { window := winObj.(*gtk.Window) //由於winObj是Gobject,所以我們使用類型斷言得到Gtk.Window對象 application.AddWindow(window) //記得將window加入我們的application中 window.ShowAll() } }
Builder.ui的內容:
<interface> <object id="window" class="GtkWindow"> <property name="visible">True</property> <property name="title">Grid</property> <property name="border-width">10</property> <child> <object id="grid" class="GtkGrid"> <property name="visible">True</property> <child> <object id="button1" class="GtkButton"> <property name="visible">True</property> <property name="label">Button 1</property> </object> <packing> <property name="left-attach">0</property> <property name="top-attach">0</property> </packing> </child> <child> <object id="button2" class="GtkButton"> <property name="visible">True</property> <property name="label">Button 2</property> </object> <packing> <property name="left-attach">1</property> <property name="top-attach">0</property> </packing> </child> <child> <object id="quit" class="GtkButton"> <property name="visible">True</property> <property name="label">Quit</property> </object> <packing> <property name="left-attach">0</property> <property name="top-attach">1</property> <property name="width">2</property> </packing> </child> </object> <packing> </packing> </child> </object> </interface>
本作品采用知識共享署名-非商業性使用-禁止演繹 4.0 國際許可協議進行許可。轉載請註明出處!
Golang Gtk+3教程:GtkBuilder使用XML構建UI