Go-GTK   はじめの一歩

ホーム   Goチュートリアル
目次


Go-GTK


Go-GTK は、GTK という GUI アプリケーションフレームワークを Go に移植したものです。


GTK

GTK(Gimp Tool Kit)は、C 言語で書かれた Linux 用の GUI アプリケーションフレームワークです。


GUI アプリケーション・フレームワーク

フレームワーク(framework)とは、何かをするために便利なように作られた関数などを集めたものです。GUI アプリケーション・フレームワークは、GUI アプリケーションを作るためのフレームワークです。

GTK は、Windows や、 macOS にも移植されています。しかし GUI の見た目が Linux(GNOME)そのものなので、このコーナーでは、Linux 限定とさせていただきます。

開発環境の構築

Go のインストール

まず、ターミナルに次のコードを入力して、Go の開発環境がすでにインストール されているかどうか確認してみましょう。


go version

goがインストールされている場合は次のように表示されます

go version go1.9.3 linux/amd64
    

インストールされていない場合は、Go の開発環境をインストールします。Go の開発環境のインストールは、Linux Mint や Ubuntu の場合は、apt パッケージマネージャーで、CentOS の場合は、yum パッケージマネージャーでインストールすることができます。wxGo も使いたい場合は、手動でインストールします。


パッケージマネージャーによるインストール

Linux Mint や Ubuntu の場合


sudo apt-get install gccgo-go
// もしくは
sudo apt install golang-go

go version
go version xgcc (Ubuntu 4.9.3-0ubuntu4) 4.9.3 linux/amd64
// もしくは
go version go1.10.4 linux/amd64
    

CentOS 7 の場合


sudo yum install epel-release
yum info golang
sudo yum install -y golang

go version
go version go1.11.5 linux/amd64
    


手動によるインストール

Go-GTK の場合は、Go のバージョンが問題になることはないみたいですが、wxGo の場合は、バージョン 1.9.3 をインストールしなければなりません。wxGo も使うという場合は、手動でバージョン 1.9.3 をインストールします。

違うバージョンの Go がインストールされている場合は、次のようにして、その Go を削除してください。


//手動でインストールしていた場合は
sudo rm -r /usr/local/go
//apt パッケージマネージャーでインストールしていた場合は
sudo apt remove golang-go
//もしくは
sudo apt remove gccgo-go
//yum パッケージマネージャーでインストールしていた場合は、
sudo yum remove golang-go
    

次のサイトから go 1.9.3 をダウンロードします。

Donwnloads - The Go Programming Language - Golang

一番下までスクロールして、Archived Versions をクリック

go1.9.3をクリック

go1.9.3linux-amd64.tar.gz をクリック

自動でアーカイブマネージャーが起動すると思いますので、任意の場所に展開してください。私はホームフォルダに展開しました。

ターミナルを起動して、go を展開したフォルダに移動して、次のコードを入力して go を /usr/local に移動してください。


sudo mv go /usr/local
    

次のコードを /etc/profile の末尾に追加してください。emacs などを使うと便利です。


sudo emacs /etc/profile

// /etc/profileの末尾の次のコードを追加
export PATH=$PATH:/usr/local/go/bin
    

ここで一度、Linux を再起動するか再ログインしてください。

go 1.9.3 がインストールできているかどうか確認します。


go version
go version go1.9.3 linux/amd64
    


GCC のインストール

Go-GTK を使うためには、GCC がインストールされている必要があります。次のコードで確認とインストールをしてください。


gcc --version
//もしインストールされていなければ

//Linux Mint、Ubuntuの場合は
sudo apt install g++

//CentOS 7の場合は
sudo yum install gcc-c++
    


Go-GTK のインストール

次のコードで Go-GTK をインストールします。


//Linux Mint、Ubuntu の場合
sudo apt install -y libgtk2.0-dev libglib2.0-dev libgtksourceview2.0-dev

go get -x github.com/mattn/go-gtk/gtk

//CentOS 7の場合
sudo yum install -y gtk2-devel.x86_64 glib2-devel.x86_64 gtksourceview3-devel.x86_64

go get -x github.com/mattn/go-gtk/gtk
    

はじめの一歩

次のコードをお好きなエディタで記述して保存してください。

main.go


package main

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

func main() {
	gtk	.  Init(&os.Args)
	window	:= gtk.NewWindow(gtk.WINDOW_TOPLEVEL)
	window	.  SetTitle("Hello Go-GTK")
	window	.  Connect("destroy", gtk.MainQuit)
	
	window	.  ShowAll()
	window	.  SetSizeRequest(400, 250)
	gtk	.  Main()
}
	


実行方法

ターミナルで、main.go を保存したディレクトリに移動して、次のコードで実行してください。


go run main.go
	


実行結果

実行は、結構、速いです。


ウィンドウを閉じるとアプリケーションは終了します。


コード説明


package main
    

Go のソースコードはパッケージ単位で管理します。特に意図がない限りは、最初のパッケージは main にします。


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

go-gtk と os というパッケージを読み込んでいます。これによって、GTK の関数などが使えるようになります。


func main() {
    

多くのプログラミング言語と同様に、Go のプログラムも main 関数から始まる決まりになっています。


	gtk	.  Init(&os.Args)
	

GUIを実装する場合は、必ず記述することになっている標準関数です。名前から察するに「GUIを初期化する」という関数でしょう。


	window	:= gtk.NewWindow(gtk.WINDOW_TOPLEVEL)
	
ウィンドウを作っています。引数の gtk.WINDOW_TOPLEVEL は、トップレベルウィンドウを指定する定数です。


	window	.  SetTitle("Hello Go-GTK")
	

ウィンドウのタイトルを設定しています。


	window	.  Connect("destroy", gtk.MainQuit)
	

Connect 関数は、イベントの発生と処理を結びつけます。そのイベントとは「window」の destroy イベントです。destroy イベントはそのオブジェクトがなくなるときに発生するイベントです。そして、イベントが発生した時の処理が gtk.MainQuit です。gtk.MainQuit は、アプリケーションを終了させる標準関数です。


	window	.  ShowAll()
	
ウィンドウや GUI 部品は作っただけでは目に見えません。Show もしくは、ShowAll 関数を呼び出すことによって目に見える状態になります。


	window	.  SetSizeRequest(400, 250)
	

ウィンドウのサイズを横 400 ピクセル、縦 250 ピクセルに設定しています。


	gtk	.  Main()
	

メインループを始める標準関数です。アプリケーションが継続的に起動し続けるようになります。この関数を呼び出さないと起動したアプリケーションは、一瞬で終了します。


13673 visits
Posted: Jul. 27, 2019
Update: Jul. 27, 2019

ホーム   Goチュートリアル   目次