GTK是⼀套在GIMP的基础上发展⽽来的⾼级的、可伸缩的现代化、跨平台的图形⼯具包,提供⼀整套完备的图形构件,适⽤于⼤⼤⼩⼩各种软件⼯程项⽬,⽆论是⼩到只需要⼀个窗⼝,还是复杂的如桌⾯环境。简单来说,GTK是⼀种函数库,⽤来帮助制作图形交互界⾯的。
环境
ubuntu 16.04
liteide x X37.4
go 1.9
gtk 2.0
工程引用GTK模块
"os"
"github.com/mattn/go-gtk/gtk"
注意:如果本地未下载安装GTK模块,那么必须先下载安装完成后,即可使用。如果没有下载,那么下载完成后,安装到GOPATH的src目录下
GTK基本组件的简单使用
1、窗体
// gtk_study project main.go
package main
import (
"os"
"github.com/mattn/go-gtk/gtk"
)
func main() {
gtk.Init(&os.Args) //初始化gtk模块
window := gtk.NewWindow(gtk.WINDOW_TOPLEVEL) //创建窗体
window.SetPosition(gtk.WIN_POS_CENTER) //窗体显示在屏幕上的位置
window.SetTitle("GTK Go!") //设置窗体标题
window.SetIconName("gtk-dialog-info") //设置窗体图标
//--------------------------------------------------------
// 布局(方便显示 组件,否则,全屏占满)
//--------------------------------------------------------
box := gtk.NewVBox(false, 1) //纵向排列BOX
window.Add(box) //window设置布局
//--------------------------------------------------------
// 开始添加显示的组件frame
//--------------------------------------------------------
frames := gtk.NewHBox(false, 1) //创建横向排列BOX,用来存放要显示的组件集合(frame)
box.PackStart(frames, false, false, 1) //组件
frame1 := gtk.NewFrame("frame1")
frames.Add(frame1)
frame2 := gtk.NewFrame("frame2")
frames.Add(frame2)
window.Connect("destroy", gtk.MainQuit) //监听关闭窗体按钮
window.SetSizeRequest(600, 600) //设置窗体大小
window.ShowAll() //显示窗体所有控件
gtk.Main() //循环显示窗体
}
菜单栏找到BR按钮,点击BR(编译并运行)
2、按钮
//--------------------------------------------------------
// Button,按钮
//--------------------------------------------------------
btns := gtk.NewHBox(false, 1) //创建纵向排列BOX,用来存放按钮
box.PackStart(btns, false, false, 1) //将所有按钮放到box中
btn1 := gtk.NewButtonWithLabel("按钮普通1") //创建按钮普通
btns.Add(btn1) //将按钮添加到BOX中
btn2 := gtk.NewButton() //创建按钮普通
btn2.SetLabel("按钮普通2") //设置标签
btns.Add(btn2) //将按钮添加到BOX中
fontbutton := gtk.NewFontButton() //设置字体的特殊按钮
btns.Add(fontbutton) //将按钮添加到BOX中
3、标签
//--------------------------------------------------------
// Lable,标签
//--------------------------------------------------------
lables := gtk.NewHBox(false, 1) //创建纵向排列BOX,用来存放按钮
box.PackStart(lables, false, false, 1) //将所有按钮放到box中
lab1 := gtk.NewLabel("标签1") //创建标签
lables.Add(lab1) //添加到BOX中
lab2 := gtk.NewLabel("标签2") //创建标签
lables.Add(lab2) //添加到BOX中
4、文本框
//--------------------------------------------------------
// Entry,文本框
//--------------------------------------------------------
inputs := gtk.NewHBox(false, 1) //创建纵向排列BOX,用来存放文本框
box.PackStart(inputs, false, false, 1) //将所有文本框放到box中
input1 := gtk.NewEntry()//创建文本框
input1.SetText("本框1")//文本框赋值
inputs.Add(input1)
input2 := gtk.NewEntry()//创建文本框
input2.SetEditable(false)//设置不可编辑
input2.SetText("本框2")//文本框赋值
inputs.Add(input2)
5、文本域
//--------------------------------------------------------
// GtkTextView 文本域
//--------------------------------------------------------
textviews := gtk.NewHBox(false, 1) //创建纵向排列BOX,用来存放文本域
box.PackStart(textviews, false, false, 1) //将所有文本域放到box中
textview := gtk.NewTextView()//创建文本域
textviews.Add(textview)
textview2 := gtk.NewTextView()//创建文本域
textview2.SetSizeRequest(50, 50)//设置宽高(注意:这里是受到box布局影响,这里对宽度执行,高度受NewHBox统一通知,所以不执行)
textviews.Add(textview2)
6、单选按钮
//--------------------------------------------------------
// GtkRadioButton 单选按钮
//--------------------------------------------------------
buttonbox := gtk.NewHBox(false, 1)
box.PackStart(buttonbox, false, false, 0)
radio1 := gtk.NewRadioButtonWithLabel(nil, "Radio1")//创建单选按钮,
radio2 :=gtk.NewRadioButtonWithLabel(radio1.GetGroup(), "Radio2")//创建单选按钮,并设置与radio1为一组
radio3 :=gtk.NewRadioButtonWithLabel(radio1.GetGroup(), "Radio3")//创建单选按钮,并设置与radio1为一组
buttonbox.Add(radio1)
buttonbox.Add(radio2)
buttonbox.Add(radio3)
radio1.SetActive(true)//默认1被选中
7、复选按钮
//--------------------------------------------------------
// CheckButton 复选按钮
//--------------------------------------------------------
checkbuttons := gtk.NewHBox(false, 1