gtk 给按钮添加事件
来源:原创
时间:2019-11-13
作者:脚本小站
分类:GoLang
package main
import (
"fmt"
"os"
"github.com/mattn/go-gtk/glib"
"github.com/mattn/go-gtk/gtk"
)
func HandleSignal(ctx *glib.CallbackContext) {
arg := ctx.Data()
data, isok := arg.(string)
if isok {
fmt.Printf("%s\n", data)
}
}
func main() {
// 初始化环境
gtk.Init(&os.Args)
win := gtk.NewWindow(gtk.WINDOW_TOPLEVEL)
win.SetTitle("排盘工具")
win.SetSizeRequest(800, 600)
layout := gtk.NewFixed()
win.Add(layout)
b1 := gtk.NewButtonWithLabel("button1")
b1.SetSizeRequest(100, 30)
b2 := gtk.NewButtonWithLabel("button2")
b2.SetSizeRequest(100, 30)
layout.Put(b1, 0, 0)
layout.Put(b2, 100, 0)
win.ShowAll()
// 事件
str1 := "button1"
b1.Connect("clicked", HandleSignal, str1) // 给函数传参
// 匿名函数方式
str2 := "botton2"
b2.Connect("clicked", func() {
fmt.Println(str2) // 直接捕获外部变量
})
// 主事件循环
gtk.Main()
}