问题原因
1、go-gtk版本与glade版本不一致
2、go-gtk默认是2.0版本,没有WindowFromObject方法
解决办法:
首先,先将gtk.WindowFromObject修改为gtk.WidgetFromObject
其次,查看gtk版本,将glade设计好的xml文件,修改为与go-gtk版本一致,即可使用
最后,在运行程序
glade设计如下:
代码如下:
package main
import (
"os"
"github.com/mattn/go-gtk/gtk"
)
func main() {
gtk.Init(&os.Args)
builder := gtk.NewBuilder() //新建builder
builder.AddFromFile("test.glade") //读取glade文件
// 获取窗口控件指针,注意"window1"要和glade里的标志名称匹配
window := gtk.WidgetFromObject(builder.GetObject("window1"))
//按窗口关闭按钮,自动触发"destroy"信号
window.Connect("destroy", gtk.MainQuit)
window.ShowAll()
gtk.Main()
}
运行结果:
安装go-gtk地址:
https://github.com/mattn/go-gtk
安装glade
#linux 安装Glade
sudo apt-get install glade libglade2-dev
#运行
glade