1. 程式人生 > >Golang Gtk+3教程:GtkBuilder使用XML構建UI

Golang Gtk+3教程:GtkBuilder使用XML構建UI

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