GUI向けに作成した​m-file内部のコ​ールバック関数を別の​m-fileスクリプ​トから呼び出す事はで​きますか?

3 views (last 30 days)
nobelnambu
nobelnambu on 16 Jul 2018
Commented: nobelnambu on 28 Jul 2018
Matlabで作成したGUIアプリの動作検証のために、ユニットテストのコードを書きたいと考えています。その場合、GUI向けに作成したm-file内に記入されているcallback関数の検証もしなければならないのですが、別のファイルからそれらを呼び出す事は可能でしょうか?
  2 Comments
michio
michio on 17 Jul 2018
GUIアプリはどのように作成されたものでしょうか。GUIDE で作成されたものであれば (例:exampleGUI.m)
exampleGUI('exampleCallback');
と、コールバック関数 (例:exampleCallback)を呼び出すことも可能です。
nobelnambu
nobelnambu on 17 Jul 2018
コメントありがとうございます。ご指摘の通りGUIDE機能で作成したものです。
試しに手元の環境で実行してみた所、入力引数が不足していますとのエラーが表示されてしまったのですが、
(1)引数の必要な場合の入力の書式
(2)生成される関数での引数によく現れる(hObject, eventdata, handles)の内、最初の2つはどの様に関数の間で受け渡しをすれば良いか。
に関してご存知であれば教えて頂けないでしょうか?

Sign in to comment.

Accepted Answer

michio
michio on 18 Jul 2018
参考までですが、ローカル関数を実行する方法として、GUIDEから生成された関数の冒頭部分に以下の記述を確認いただけると思います。(以下は R2018a で生成した exampleGUI.m 場合)
% EXAMPLEGUI.m('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in EXAMPLEGUI.M with the given input arguments.
特に入力が必要で無ければ
exampleGUI('exampleCallback');
入力引数が必要であれば、'exampleCallback' に続けて
exampleGUI('exampleCallback',var1, var2, var3);
と指定することができます。hObject, eventdata など GUIDE のオブジェクトをローカル関数内で使用している場合には、、(すいません、手元に適切なGUIが無いため推測になりますが)
figh = exampleGUI;
exampleGUI('exampleCallback',figh.Children(1), var2, var3);
など一度 GUI のオブジェクトを作成しておいて実施するなど、もしかしたら可能かもしれません。
  1 Comment
nobelnambu
nobelnambu on 28 Jul 2018
回答ありがとうございます。アドバイスをもとに試してみました。コールバック関数への値の代入は上記の方法で上手く行きました。一番の懸案は引数の更新だったのですが、
guiMfile = "ファイル名";
handles = guidata(guiMfile);
hObject = handles.output;
という形で得る事が出来ました。

Sign in to comment.

More Answers (0)

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!