この章では、wxGo を Windows へインストールする方法を説明しています。
macOS へのインストールは、はじめの一歩をご覧ください。
wxGo を使うためには、g++ の開発環境がインストールされている必要があります。
Windows に g++ をインストールするには、いろいろな方法がありますが、ここでは MinGW(Minimalist GNU for Windows)を使います。
次のサイトから MingW-W64-builds と Msys2 をダウンロードします。
ダウンロードした mingw-w64-install.exe を実行します。Settings 画面が表示されたら次の図のように設定してください。
インストールする場所はデフォルトのままにしてください。
次にmsys2-x86-64-20190524.exe を実行します。
インストールする場所はデフォルトのままにしてください。
インストール後、自動で MSys のコンソールが表示されますが、一旦閉じてください。
スタートメニュー → すべてのプログラム → MSYS2 64ibt → MSYS2 minGW 64-bit で、MSys 64bit のコンソールを開き直して、次のコードを実行します。
g++ --version
bash: g++: コマンドが見つかりません
update-core
// もしアップデートがあった場合は、コンソールを一度閉じて、もう一度開いて、次のコードを実行
pacman -Su
// アップデートの有無に関係なく、次のコードを実行
pacman -S mingw-w64-x86_64-toolchain
選択して下さい (デフォルト=all): // エンターキーを押す
g++ --version
g++.exe (Rev2, Built by MSYS2 project) 8.3.0
・・・
Linux と Windows で wxGo を使う場合は、Go のバージョンが問題になります。Go のバージョンが 1.9.4 以上の場合は、wxGo をインストールしようとすると「無効なフラグ」というエラーが出ます。その回避法はオフィシャルページにいろいろと書かれていますが、私の場合は、どの方法も上手くいきませんでした。
以上の理由により、ここでは、Go 1.9.3 をインストールします。
次のコードで、Go がすでにインストールされているかどうか確認して、違うバージョンの Go がインストールされている場合は、その Go を削除してください。
go version
bash: go: コマンドが見つかりません
次のサイトから go 1.9.3 をダウンロードします。
Donwnloads - The Go Programming Language - Golang一番下までスクロールして、Archived Versions をクリック
go1.9.3をクリック
go1.9.3.windows-amd64.msi をクリックしてダウンロードします。
ダウンロードした go1.9.3.windows-amd64.msi を実行します。インストールする場所は、C:¥msys64¥usr¥local¥ にします。
インストール後、MSys2 64bit のコンソールを起動して、go のバージョンを確認してください。
go version
go version go1.9.3 windows/amd64
wxGo をインストールするために Git が必要です。MSys 64bit コンソールに次のように入力して、Git をインストールします。
pacman -S git
次に、wxGo をインストールします。MSys 64bit コンソールに次のように入力して、インストールしてください。
go get -x github.com/dontpanic92/wxGo/wx
インストールが終わるまでしばらく時間がかかります。
次のコードをお好きなエディタで記述して保存してください。保存する場所は、C:¥msys64¥home¥あなたのユーザー名¥ です。
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()
}
MSys 64bit コンソールを起動すると、C:¥msys64¥home¥あなたのユーザー名¥ ディレクトリが表示されます。そのまま、次のコードで実行してください。
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 メソッドを呼び出さない場合は、アプリケーションは一瞬で終わります。