gtk3 之缘
没有人一上来就什么都会的,至少我达不到。本人由于学习go,又看到了gtk相关的开发,于是开始了gtk开发之旅,奈何gtk的版本或者案例有点老,或者我的环境比较高(个人喜欢最新的环境),导致一直无法编译成功,各种报错。
于是各种爬文,看到了一份gtk的教程(很详细的系列),但是始终无法成功,于是就看向了gtk3,但是奈何网上的相关的内容实在不多,于是根据大佬的gtk文档翻译了一份gtk3的系列案例。
当然在翻译的过程中还是存在各种bug,欢迎大家来指正。
引用
GTK传送门:https://www.cnblogs.com/tennysonsky/p/8433888.html
案例说明
开发一个空白窗口。
demo.go
package main
import (
"github.com/gotk3/gotk3/glib"
"github.com/gotk3/gotk3/gtk"
"log"
"os"
)
func main() {
// 接受两个参数一个是 应用标识,其一般使用你域名的倒序形式;
//另一个是GApplicationFlags,其为了满足你对应用的特定需求。
//通常就像实例代码一样写glib.APPLICATION_FLAGS_NONE就可以了。
const appId = "com.nayoso.example"
// 每个gtk3程序都需要一步
app, err := gtk.ApplicationNew(appId, glib.APPLICATION_FLAGS_NONE)
if err != nil {
log.Fatal("Could not create application.", err)
}
//为activate事件绑定函数, activate会在程序启动时触发,也就是app.Run()时
// 创建窗口
_, err = app.Connect("activate", func() {
createWindow(app)
})
if err != nil {
log.Fatal(err)
}
app.Run(os.Args) //运行gtkApplication
}
func createWindow(application *gtk.Application) {
appWindow, err := gtk.ApplicationWindowNew(application) //创建window控件
if err != nil {
log.Fatal("Could not create application window.", err)
}
//设置窗口属性
appWindow.SetTitle("Basic Application.")
appWindow.SetDefaultSize(400, 400)
//显示窗口
appWindow.Show()
}