【笔记】gotk3学习笔记

前言

在Go语言中通过gotk3/gotk3使用GTK

下载依赖

下载GTK

MacOS

1
brew install gtk+3

下载GoGTK

1
go get github.com/gotk3/gotk3/gtk

快速入门

1

初始化

1
gtk.Init(&os.Args)

窗体的操作

创建窗体

1
window, _ := gtk.WindowNew(gtk.WINDOW_TOPLEVEL)

设置窗体尺寸

1
window.SetSizeRequest(<width>, <height>)

设置窗体尺寸固定

1
window.SetResizable(false)

设置窗体标题

1
window.SetTitle("文本内容")

设置窗体图标

1
window.SetIconFromFile("<file>")

获取窗体尺寸

1
2
var width, height int
window.GetSize(&width, &height)

显示窗体

1
window.Show()

显示窗体和所有其他组件

1
window.ShowAll()

设置事件

关闭窗体事件

  • 通过gtk.MainQuit()函数退出程序
1
2
3
window.Connect("destroy", func() {
gtk.MainQuit()
})

布局的操作

创建布局

1
layout, _ := gtk.FixedNew()

将布局放到窗口上

1
window.Add(layout)

标签的操作

创建标签

1
label, _ := gtk.LabelNew("文本内容")

修改标签内容

1
label.SetText("文本内容")

获取标签内容

1
var result string = label.GetText()

按钮的操作

创建按钮

1
button, _ := gtk.ButtonNew()

设置按钮尺寸

1
button.SetSizeRequest(<width>, <height>)

设置按钮标签

1
button.SetLabel("文本内容")

设置事件

点击事件

1
2
3
button.Connect("clicked", func() {
...
})

按钮按下

1
2
3
button.Connect("pressed", func() {
...
})

按钮释放

1
2
3
button.Connect("released", func() {
...
})

将按钮放在布局上

1
layout.Add(button)

指定在放置时指定位置

1
layout.Put(button, <width>, <height>)

图片的操作

设置允许在屏幕上绘图

1
window.SetAppPaintable(true)

创建图片

1
image, _ := gtk.ImageNewFromFile("<file>")

先创建纹理再创建图片

1
2
pixbuf, _ := gdk.PixbufNewFromFile("<file>")
image, _ := gtk.ImageNewFromPixbuf(pixbuf)

获取图片尺寸

1
2
var width, height int
image.GetSizeRequest(&width, &height)

修改纹理尺寸

1
pixbuf, _ = pixbuf.ScaleSimple(<width>, <height>, gdk.INTERP_BILINEAR)

键盘和鼠标的操作

键盘事件

键盘按下

1
2
3
window.Connect("key-press-event", func() {
...
})

键盘松开

1
2
3
window.Connect("key-release-event", func() {
...
})

鼠标事件

设置允许鼠标事件

1
window.SetEvents(int(gdk.BUTTON_PRESS_MASK))

鼠标按下

1
2
3
window.Connect("button-press-event", func() {
...
})

运行GTK

1
gtk.Main()

完成