glade設計如下:
示例代碼:
package main
import (
"fmt"
"os"
"github.com/mattn/go-gtk/gtk"
)
func main() {
gtk.Init(&os.Args)
builder := gtk.NewBuilder() //新建builder
builder.AddFromFile("test.glade") //讀取glade文件
// 獲取相應控件
window := gtk.WindowFromObject(builder.GetObject("window1"))
button1 := gtk.ButtonFromObject(builder.GetObject("button1"))
button2 := gtk.ButtonFromObject(builder.GetObject("button2"))
//信號處理
button1.Connect("clicked", func() {
//新建消息對話框,選擇對話框
dialog := gtk.NewMessageDialog(
button1.GetTopLevelAsWindow(), //指定父窗口
gtk.DIALOG_MODAL, //模態對話框
gtk.MESSAGE_QUESTION, //指定對話框類型
gtk.BUTTONS_YES_NO, //默認按鈕
"Are u ok?") //設置內容
dialog.SetTitle("問題對話框") //對話框設置標題
flag := dialog.Run() //運行對話框
if flag == gtk.RESPONSE_YES {
fmt.Println("按下yes")
} else if flag == gtk.RESPONSE_NO {
fmt.Println("按下no")
} else {
fmt.Println("按下關閉按鈕")
}
dialog.Destroy() //銷燬對話框
})
button2.Connect("clicked", func() {
dialog := gtk.NewMessageDialog(
window, //指定父窗口
gtk.DIALOG_MODAL, //模態對話框
gtk.MESSAGE_INFO, //info類型
gtk.BUTTONS_OK, //默認按鈕
"結束了") //設置內容
dialog.Run() //運行對話框
dialog.Destroy() //銷燬對話框
})
window.Connect("destroy", gtk.MainQuit) //關閉窗口
window.ShowAll()
gtk.Main()
}
程序運行效果: