go-gtk3开发之添加按钮(4)

go-gtk3开发之添加按钮

案例说明

创建水平布局,并在布局中添加按钮,按钮绑定事件,点击按钮后进行打印输出。

demo.go

package main

import (
	"fmt"
	"github.com/gotk3/gotk3/glib"
	"github.com/gotk3/gotk3/gtk"
	"log"
	"os"
)

func main() {
	// 创建程序
	const appId = "com.nayoso.example"
	app, err := gtk.ApplicationNew(appId, glib.APPLICATION_FLAGS_NONE)
	if err != nil {
		log.Fatal("Could not create application.", err)
	}

	// 创建窗口
	_, err = app.Connect("activate", func() {
		createWindow(app)
	})
	if err != nil {
		log.Fatal(err)
	}

	// 事件循环
	app.Run(os.Args)
}

// 创建窗口
func createWindow(application *gtk.Application) {
	appWindow, err := gtk.ApplicationWindowNew(application)
	if err != nil {
		log.Fatal("Could not create application window.", err)
	}
	// 标题
	appWindow.SetTitle("Basic Application.")
	// 窗口大小
	appWindow.SetDefaultSize(400, 400)

	//以水平布局创建一个容器, 第二个参数是其中控件的像素间隔
	buttonBox, err := gtk.BoxNew(gtk.ORIENTATION_HORIZONTAL, 2)
	if err != nil {
		log.Fatal(err)
	}

	//将布局添加到window中
	appWindow.Add(buttonBox)

	// 设置布局大小
	buttonBox.SetSizeRequest(400, 400)

	//创建一个按钮
	button1, _ := gtk.ButtonNewWithLabel("^_^")
	button2, _ := gtk.ButtonNewWithLabel("@_@")

	//将按钮添加到box容器中
	buttonBox.Add(button1)
	buttonBox.Add(button2)

	// 设置按钮大小
	button1.SetSizeRequest(100, 100)
	button2.SetSizeRequest(100, 100)

	//让我们为按钮点击添加一个函数,每次点击都会在命令行输出Hello World
	_, err = button1.Connect("clicked", func() {
		fmt.Println("按钮1")

	})
	if err != nil {
		log.Fatal(err)
	}
	_, err = button2.Connect("clicked", func() {
		fmt.Println("按钮2")

	})
	if err != nil {
		log.Fatal(err)
	}

	// 按窗口的关闭按钮,触发:"destroy"
	//_, err = appWindow.Connect("destroy", func() {
	//	appWindow.Destroy() //摧毁窗口
	//})
	//if err != nil {
	//	log.Fatal(err)
	//}

	//与Show()不同在于,它会输出Window中的子控件。你可以修改,查看不同的效果
	appWindow.ShowAll()
}
发布了94 篇原创文章 · 获赞 52 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/weixin_43968923/article/details/105000691