MATLABにはGUIアプリを作る方法がいくつかあります.
- App DesignerというGUIアプリケーションを使って作る
- コードを書いて作る
ここでは2. の方法で作ってみます.MATLABにもGUIを作るフレームワークがあります.
GUIフレームワークにも様々とパラダイムがありますが,MATLABのはPythonのtkinterと似ていると思います.
ウィンドウを作成する uifigure
fig = uifigure;
fig.Name = "MATLAB GUI Test";
レイアウトを設定する uigridlayout
引数に親コンテナを指定します.なんかtkinterと似ていますね.
layout = uigridlayout(fig,[2 2]);
ラベルを作成する uilabel
親コンテナとしてレイアウトを指定すると,レイアウトに従って適当な場所に配置されます.
greeting_label = uilabel(layout);
greeting_label.Text = "お帰りなさい,あなた.何にする?";
greeting_label.HorizontalAlignment = "right";
ドロップダウンを作成する uidropdown
dropdown = uidropdown(layout);
dropdown.Items=["ごはん","お風呂","ワ・タ・シ♡"];
グリッドの複数行・複数列に渡るレイアウト
今から下行に2列に渡ってラベルを配置したいと思うのですが,そういう時はコンポーネントのLayout
プロパティから変更ができます.例えば以下の例では1から2列目に渡ることができます.
reaction_label = uilabel(layout);
reaction_label.Text = "";
reaction_label.HorizontalAlignment = "center";
reaction_label.FontSize = 32;
reaction_label.Layout.Column = [1 2];%1から2列目に渡る.
イベントハンドリング
ここでは,ドロップダウンの選択内容に従ってラベルの文字列を変更させるようにします.
イベントハンドラは以下のような2つの引数を受け取る関数として定義されます.src
にイベントの発信元のコンポーネントが入ります.
function handler(src,event)
このようなイベントハンドラを作って,当該のコンポーネントのプロパティに登録します.
ドロップダウンの選択ハンドラはValueChangedFcn
プロパティに登録します.
function on_select(src,event)
SELECTION_TO_REACTION = dictionary( ...
"ごはん","⊂((・⊥・))⊃", ...
"お風呂","(*゚▽゚)ノ", ...
"ワ・タ・シ♡","/////////" ...
);
reaction_text = SELECTION_TO_REACTION(src.Value);
reaction_label.Text = reaction_text;
end
dropdown.ValueChangedFcn = @on_select;
動作例
「ごはん」を選択
「お風呂」を選択すると,下部のラベルの内容が変わります.
まとめ
以上で作ったコードをまとめます.ここでは1つの関数として包んでいます.
MATLABのGUIフレームワークについて,詳細は↓のドキュメントにアクセスして下さい.
いやあ,MATLABは何でもできますねえ...卒業しても離れられる自信がない.