Matlab(R2016a)GUIに簡単な「ブラウズ」ボタンを作成しようとしています。コールバック関数uigetdir
は2つのオプション引数STARTPATH, TITLE
を持ってuigetdirをプッシュボタンのコールバックとして使用すると、奇妙で無効な引数が原因でクラッシュする
hd = dialog;
hb = uicontrol('parent',hd,'style','pushbutton','string','browse',...
'callback',@uigetdir);
: 私のコードは次のようなものです。原則的に、私は私のブラウズボタンはオプションの引数の有無にかかわらずuigetdir
を呼び出すかどうか、そのような
hd = dialog;
hb = uicontrol('parent',hd,'style','pushbutton','string','browse',...
'callback',{@uigetdir,'myStartPath','myTitle');
として、セルアレイ上の関数ハンドルとそれらを連結することで、私のコールバックにこれらを渡すことができ、それがクラッシュします。さまざまなエラー、同じ理由:uicontrol
はコールバック関数への引数として2つのコールされていない奇妙な変数(UIプロパティを含む)を含めることを決定し、uigetdir
はそれらの処理方法を知らない。
これは、GUIのコールバック関数としてuigetdir
(またはその他の組み込み関数)を使用できないということですか?カスタム関数を書く以外にも解決策が必要でしょうか?
[コールバックのドキュメント](http://www.mathworks.com/help/matlab/creating_guis/write-callbacks-using-the-programmatic-workflow.html#f16-1001315) – excaza
本当ですか?ドキュメンテーションから: "関数定義は2つの入力引数、' hObject'と 'callbackdata'を定義しなければなりません。関数を呼び出すとき、Handle Graphicsは自動的に' hObject'と 'callbackdata'を渡します。 – excaza
また、ドキュメントから: "注:' hObject'と 'callbackdata'引数をサポートしていない既存の関数を使いたい場合は、無名関数として指定することができます。例えば' uicontrol( 'Style' 'スライダー'、 'コールバック'、@(hObject、コールバックデータ)myfunction(x)); '" – excaza