13
8

More than 3 years have passed since last update.

Go Windows GUI Walk examples

Last updated at Posted at 2020-03-07

Go Windows GUI Walk examples

GoでWindowsのGUIを作るときは、
lxn/walk というpackageを使っています。

lxn/walk

GitHub - lxn/walk: A Windows GUI toolkit for the Go Programming Language
https://github.com/lxn/walk

上記のリポジトリ内に examples というフォルダがあり、
いろいろなコード例が入っています。

./examples
  ├─actions
  ├─clipboard
  ├─databinding
  ├─drawing
  ├─dropfiles
  ├─externalwidgets
  ├─filebrowser
  ├─gradientcomposite
  ├─imageicon
  ├─imageview
  ├─imageviewer
  ├─img
  ├─linklabel
  ├─listbox
  ├─listbox_ownerdrawing
  ├─logview
  ├─multiplepages
  ├─notifyicon
  ├─progressindicator
  ├─radiobutton
  ├─settings
  ├─slider
  ├─statusbar
  ├─tableview
  ├─webview
  └─webview_events

使いたい部品があるときは、
上記のコードを参考に作っていってます。

どのような画面になるかは、各フォルダで
go build すれば実行体ができて動作を確認できます。

今回は build してどのような画面ができるのか ご紹介していきます。

準備

インストールは、おなじみの go get をたたきます。

$ go get github.com/lxn/walk

上記が終わると、
%GOPATH%\src\github.com\lxn\walk にファイルができているはずです。

あとは examples 内の各フォルダで go build します。

(ちょっと時短してperlでサクッとやっちゃいます)

$ perl -MPath::Tiny -e "map{system qq/cd $_ & go build/} map{$_->canonpath} grep {$_->is_dir} path(q/./)->children"
can't load package: package github.com/lxn/walk/examples/img: no Go files in C:\Users\hiro\go\src\github.com\lxn\walk\examples\img

./examples/img/ 内はGUIで使う画像ファイルのみしか格納されてないので実行体はできません

これで各フォルダに ~.exe ができたはずです。1つずつ見ていきましょう。

※build: Windows 10, go: 1.13.3, lxn/walk: 55ccb3a

actions

actions.gif

各ボタンにアクション(処理)が割り当ててあって、
選択すると画面の表示を変更したり、ボタンを押すとダイアログが出たりします。

clipboard

clipboard.gif

ボタンを押すことでテキスト入力エリアの文字をクリップボードにコピーしたり、ペーストしたりできます。

databinding

databinding.gif

データを入力するウィンドウが出てきます。
必須な項目を強調表示してくれたり、、、いろいろできますね!

内部的な話をすると、構造体をDataBinderに渡しておくとデータ入力したあとに値を変更してくれます。
※データ入力後、animal: の下に表示されているデータが変更されているのがわかると思います

drawing

drowing.png

線を引いたりできます!

dropfiles

dropfiles.gif

ファイルをウィンドウに落とすと、ファイルパスが表示されます。

ファイルを入力するときに便利ですね。

externalwidgets

externalwidgets.png

黄緑なボタンを押すとyyyy/mm/dd hh:mm:ss *: WM_LBUTTONDOWN と表示されます。
通常のボタン以外にもボタンが作れます。

filebrowser

filebrowser.png

フォルダを選択すると右側に表示されます。

gradientcomposite

gradientcomposite.png

スライダーを動かすと色が変わります。

imageicon

imageicon.png

ボタンを押すと左上のアイコンが変わります!(002 -> 003)

未読表示とかに使えそう!

imageview

imageview.png

画像を表示するときに参考になりますね。

びよーん

imageviewer

う、、、うごかんw

linklabel

linklabel.png

ラベルにリンクが貼れます!

listbox

listbox.png

リストボックスに環境変数名が表示されて、選択すると値がでるやつ。

listbox_ownerdrawing

listbox_ownerdrawing.png

2つの列が1つの行として表示される。

logview

logview.png

何か表示されそうでされない。。。

multiplepages

multiplepages.png

左側にあるボタンを押すと、右側が変わります。

notifyicon

notifyicon.gif

実行すると通知が表示されます。
※Windows 7以前では バルーン表示

タスクトレイのアイコンをクリックすると違うメッセージが表示されます。

progressindicator

う、、、うごかんw

radiobutton

radiobutton.png

複数の選択肢から1つだけ選ぶときに使うやつですね。

ラジオボタンを選択すると 左にあるラベルの有効・無効が切り替わります。

settings

settings.png

setting.ini を読み書きして内容を表示するサンプル。

らしいけど、ファイルが出んのじゃ、、、

slider

slider.png

最小(Min value)・最大(Max value)をいじってスライダーをグリグリすると、
その範囲内で値(Value)が変わります。

縦と横にあるスライダーは連動して動きます。

Print state ボタンを押すと < Min value | Value | Max value > とログに表示されます。

statusbar

statusbar.png

ウィンドウ下部にステータスを表示するバーを追加できます。

click には、選択すると 表示を変える処理 が割り当てられています。

tableview

tableview.png

テーブルに様々なデータを表示できます。

細かく見てくといろいろやってます。

タイトル部が右寄せ(Baz)だったり、各行にチェックボックスがついてたり・・・。

webview

webview.png

アドレスが入っているところを変更すると、Webページが表示できます。

webview_events

webview_events.png

WebView上でカーソルを当てたところの情報が取れるみたいですね!

まとめ

使いたい部品が見つかったら、ソースコードを見てみてくださいね。

13
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
8