wxGo   はじめの一歩

ホーム   Goチュートリアル

wxGo


wxGo は、人気のある wxWidgets という、GUI アプリケーション・フレームワークを、Go に移植したものです。


wxWidgets

wxWidgets は、C++ で書かれた クロスプラットフォームな GUI アプリケーション・フレームワークです。


クロスプラットフォーム

クロスプラットフォーム(cross-platform)とは、Windows、macOS、Linux などの異なるオペレーティングシステムで、同じソースコードのプログラムを実行できる仕組みのことです。多くの場合、同じソースコードファイルを、それぞれの OS 上で、コンパイルするだけで実行できます。


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

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

開発環境の構築

macOS 以外の環境には、まだ開発環境の構築に成功していないので、このコーナーは、macOS 限定とさせていただきます。


Go のインストール

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


go version

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

go version go1.12.6 darwin/amd64
    

インストールされていない場合は、Go の開発環境をインストールします。Go の開発環境のインストールは非常に簡単です。


macOS に Go の開発環境をインストールする場合は、Homebrewという、macOS用のパッケージマネージャを使ってインストールします。


Homebrewのインストール

ターミナルに次のコードを入力して、エンターキーを押すと、Homebrewのインストールが始まります。macOS でプログラミングを行う場合は、Command Line Tools が必要ですが、Homebrewのインストーラーは、Cmmand Line Tools も自動的にインストールしてくれます。


/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    

Home brewのインストールコードは、変更になる場合があります。下記オフィシャルサイトに表示されているイントールコードを、コピーして使うほうが良いでしょう。

macOS用パッケージマネージャー - Homebrew


Go 開発環境のインストール

ターミナルに次のコードを入力して、エンターキーを押します。


brew install go

go version
go version go1.12.6 darwin/amd64
    


C++ のインストール

wxGo を使うためには、C++ の開発環境がインストールされている必要があります。

macOS の場合は、Command Line Toolsをインストールすると、C++ の開発環境もインストールされます。Command Line Toolsは、Homebrew をインストールした時に、同時にインストールされていますので、ここでは特に何もする必要はありません。


wxGo のインストール

wxGo は、次のコードでインストールできます。少し時間がかかる場合があります。


go get github.com/dontpanic92/wxGo/wx
    

はじめの一歩

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


main.go


package main

import "github.com/dontpanic92/wxGo/wx"

func main() {
	app 	:= wx.NewApp()
	frame	:= wx.NewFrame(wx.NullWindow, wx.ID_ANY, "Hello wxGo")
	frame	.Show()
	app	.MainLoop()
}
	


実行方法

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


go run main.go
	


実行結果

実行結果が表示されるのに、少し時間がかかります。


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

ウィンドウのデフォルトサイズは、プラットフォームによって違うみたいです。多くの場合、横 400 ピクセル、縦 500 ピクセルぐらいになる場合が多いみたいです。上の図と同じサイズにするには、コードを次のように変更してください。


	frame	:= wx.NewFrame(wx.NullWindow, wx.ID_ANY, "Hello wxGo")
        ↓
	frame	:= wx.NewFrame(wx.NullWindow, wx.ID_ANY, "Hello wxGo", wx.DefaultPosition, wx.NewSize(400, 250))
	


コード説明


package main
    

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


import "github.com/dontpanic92/wxGo/wx"
    

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


func main() {
    

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


	app 	:= wx.NewApp()
	

アプリケーションを作って起動します。


	frame	:= wx.NewFrame(wx.NullWindow, wx.ID_ANY, "Hello wxGo")
	
フレームを作っています。フレームとは、ウィンドウのことです。第1引数にフレームが所属するウィンドウ、第2引数にフレームの ID、第3引数にフレームに表示される文字列を指定します。

フレームじたいが、ウィンドウなので、どのウィンドウにも所属していないことをあらわす wx.NullWindow を第1引数に指定しています。第2引数に、wx.ID_ANY を指定すると一意の整数が与えられます。wx.ID_ANY の替わりに -1 と記述しても一意の整数が得られます。


	frame   .Show()
	

フレームは、作っただけでは表示されません。Show メソッドで表示されるようにします。


	app     .MainLoop()
	

アプリケーションの MainLoop メソッドを呼び出すことで、アプリケーションが継続的に起動し続けるようになります。もし MainLoop メソッドを呼び出さない場合は、アプリケーションは一瞬で終わります。


459040 visits
Posted: Jul. 11, 2019
Update: Jul. 28, 2019

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