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

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

Connectez-vous pour commenter.

Réponse acceptée

michio
michio le 18 Juil 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 commentaire
nobelnambu
nobelnambu le 28 Juil 2018
回答ありがとうございます。アドバイスをもとに試してみました。コールバック関数への値の代入は上記の方法で上手く行きました。一番の懸案は引数の更新だったのですが、
guiMfile = "ファイル名";
handles = guidata(guiMfile);
hObject = handles.output;
という形で得る事が出来ました。

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur 対話型コントロールとコールバック dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!