Go语言图形界面开发GTK:控件

  • A+
所属分类:Golang

1 控件简介

控件是对数据和方法的封装。控件有自己的属性和方法。属性是指控件的特征。方法是指控件的一些简单而可见的功能。如按钮就是一个控件,这个按钮是方形的,里面有张图片,这是我们能看到外观属性,同时,这个按钮具备被人按下的功能。

GTK中控件主要分为两类:容器控件,非容器控件。

  • 容器控件:它可以容纳别的控件,我们可以理解为盒子,盒子拿来装东西。容器控件又分为两类,一类只能容纳一个控件,如窗口,按钮;另一类能容纳多个控件,如布局控件。
  • 非容器控件:它不可以容纳别的控件,如标签、行编辑。

2 控件的使用

2.1 示例代码

```
package main

import (
"os"
"github.com/mattn/go-gtk/gtk"
)

func main() {
gtk.Init(&os.Args) //环境初始化

//--------------------------------------------------------
// 主窗口
//--------------------------------------------------------
window := gtk.NewWindow(gtk.WINDOW_TOPLEVEL) //创建窗口
window.SetPosition(gtk.WIN_POS_CENTER)       //设置窗口居中显示
window.SetTitle("GTK Go!")                   //设置标题
window.SetSizeRequest(300, 200)              //设置窗口的宽度和高度

//--------------------------------------------------------
// GtkFixed
//--------------------------------------------------------
layout := gtk.NewFixed() //创建固定布局

//--------------------------------------------------------
// GtkButton
//--------------------------------------------------------
b1 := gtk.NewButton() //新建按钮
b1.SetLabel("^[email protected]")    //设置内容
//b1.SetSizeRequest(100, 50) //设置按钮大小

b2 := gtk.NewButtonWithLabel("@_~") //新建按钮,同时设置内容
b2.SetSizeRequest(100, 50)          //设置按钮大小

//--------------------------------------------------------
// 添加布局、添加容器
//--------------------------------------------------------
window.Add(layout) //把布局添加到主窗口中

layout.Put(b1, 0, 0)    //设置按钮在容器的位置
layout.Move(b1, 50, 50) //移动按钮的位置,必须先put,再用move

layout.Put(b2, 50, 100)

window.ShowAll() //显示所有的控件

gtk.Main() //主事件循环,等待用户操作

}

```

程序运行效果:
这里写图片描述

2.2 代码分析

1) Put

func (v *Fixed) Put(w IWidget, x, y int)
功能:固定布局容器添加控件
参数:
widget:要添加的控件
x, y:控件摆放位置的起点坐标

这里写图片描述

2) ShowAll

func (v *Widget) ShowAll()
功能:显示所有的控件,如果窗口放入一个容器,这时,容器上的所有控件也会跟着显示。

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin