0

Matlab (R2016a) GUI で単純な「参照」ボタンを作成しようとしています。私のコードは次のようなものです:

hd = dialog;
hb = uicontrol('parent',hd,'style','pushbutton','string','browse',...
'callback',@uigetdir);

コールバック関数uigetdirには 2 つのオプションの引数がありますSTARTPATH, TITLE。原則として、次のようにセル配列の関数ハンドルと連結することで、これらをコールバックに渡すことができます。

hd = dialog;
hb = uicontrol('parent',hd,'style','pushbutton','string','browse',...
'callback',{@uigetdir,'myStartPath','myTitle');

オプションの引数の有無にかかわらず、ブラウズ ボタンの呼び出しuigetdirに関係なく、クラッシュします。異なるエラー、同じ理由:uicontrolコールバック関数への引数として 2 つの呼び出されていない奇妙な変数 (UI プロパティを含む) を含めることを決定し、uigetdirそれらをどうするかわかりません。

uigetdirこれは、GUI のコールバック関数として (またはほとんどの他の組み込み関数) を使用できないということですか? カスタム関数を書く以外に解決策があるはずですよね?

4

1 に答える 1

4

デフォルトでは、すべてのuicontrolオブジェクトに次の 2 つの入力引数が渡されます。

  • ハンドルuicontrol自体
  • イベントに固有の情報を含むオブジェクト。

関数名に追加@して関数ハンドルを作成するだけでコールバックを定義すると、これら 2 つの引数が自動的に関数に渡されます

代わりに、匿名関数を作成して、2 つの入力引数を受け入れ、uigetdir入力引数なしで呼び出し、既定のコールバック入力を事実上無視することができます。

set(hb, 'Callback', @(s,e)uigetdir())

開始パスとタイトルを渡したい場合はuigetdir、無名関数内から渡すことができます。

set(hb, 'Callback', @(s,e)uigetdir('mystartpath', 'mytitle'))
于 2016-08-09T15:50:20.200 に答える