Go语言的GUI编程 GTK go-gtk 2.0 基础组件使用

本文介绍了如何在Go语言环境下利用go-gtk库进行GTK 2.0图形用户界面编程,包括窗体、按钮、标签、文本框等基本组件的创建和使用,还涉及到对话框、文件选择、菜单和布局等高级功能。
摘要由CSDN通过智能技术生成

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鼎上西瓜刀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值