控件
控件簡介
控件是對數據和方法的封裝。控件有自己的屬性和方法。屬性是指控件的特征。方法是指控件的一些簡單而可見的功能。如按鈕就是一個控件,這個按鈕是方形的,里面有張圖片,這是我們能看到外觀屬性,同時,這個按鈕具備被人按下的功能。
GTK
中控件主要分為兩類:容器控件,非容器控件。
- 容器控件:它可以容納別的控件。我們可以理解為盒子,盒子拿來裝東西。容器控件又分為兩類,一類只能容納一個控件,如窗口,按鈕;另一類能容納多個控件,如布局控件。
- 非容器控件:它不可以容納別的控件。如標簽、行編輯。
控件的使用
現在我們已經創建出了一個窗口程序,但是這個窗口什么也沒有。接下來我們在窗口上添加按鈕等元素。
在窗口中添加按鈕控件,首先創建按鈕,如下所示:
// 創建按鈕
b := gtk.NewButton()
// 設置按鈕大小
b.SetSizeRequest(80, 32)
// 設置按鈕內容
b.SetLabel("點擊")
按鈕創建完成后,需要將按鈕添加到窗口中,這就需要用到 布局
控件。
所謂 布局
控件,就是對窗口中將要顯示的控件元素進行排列。將按鈕等控件放在布局控件中,然后通過調整按鈕控件的坐標來設置其在窗口中的位置。
創建布局控件:
// 創建布局控件(固定布局,任意布局)
layout := gtk.NewFixed()
布局控件創建完成后,將按鈕添加到布局控件中。
layout.Add(b)
這時按鈕在窗口的左上角,我們先調整一下按鈕的位置。
// 放在布局的指定位置
layout.Put(b, 0, 0)
// 移動按鈕的位置,必須先Put(),再用Move()
layout.Move(b, 280, 224)
整體代碼:
package main
import (
"github.com/mattn/go-gtk/gtk"
"os"
)
func main(){
//GTK初始化操作
gtk.Init(&os.Args)
// 通過GTK創建窗口
win := gtk.NewWindow(gtk.WINDOW_TOPLEVEL)
// 設置窗體的大小
win.SetSizeRequest(640, 480)
// 設置窗體標題
win.SetTitle("GTK窗口")
// 創建按鈕
b := gtk.NewButton()
// 設置按鈕大小
b.SetSizeRequest(80, 32)
// 設置按鈕內容
b.SetLabel("點擊")
// 創建布局
layout := gtk.NewFixed()
// 將按鈕 b 添加到布局中
layout.Add(b)
// 放在布局的指定位置
layout.Put(b, 0, 0)
// 移動按鈕的位置,必須先Put(),再用Move()
layout.Move(b, 280, 224)
// 將布局放在界面中顯示
win.Add(layout)
// 將界面顯示
win.ShowAll()
// 調用GTK下的main運行程序
gtk.Main()
}
運行結果:
代碼分析
Put
func (v *Fixed) Put(w IWidget, x, y int)
功能:固定布局容器添加控件
參數:
- IWidget:要添加的控件
- x,y:控件擺放位置的坐標
ShowAll
func (v *Widget) ShowAll()
功能:顯示所有的控件。如果窗口放入一個容器,這時容器上所有的控件也會顯示
李培冠博客
歡迎訪問我的個人網站:
李培冠博客:lpgit.com