2017-09-19 5 views
1

「X」を押してポップアップウィンドウを閉じると、このようなエラーが表示されます。ここでdelete()を使用したエラーMATLAB GUI

は私が取得エラーです:ここでは

Undefined function or variable 'PopupWindow'. 

Error while evaluating UIControl Callback 

は、私が使用するコードです:

function PopupWindow = alertBox(figg,position,showtext,titlebar); 

    PopupWindow = uipanel('Parent',figg,'Units','pixels','Position',position,... 
      'BackGroundColor',CYAN,'BorderType','beveledout','ButtonDownFcn','','Visible','on'); 

    uicontrol('Parent',PopupWindow,'Units','pixels','Style','PushButton','String','X',... 
        'Position',[position(3)-margin+1 position(4)-margin+1 margin-2 margin-2],'Callback',... 
        ['delete(PopupWindow);']); 

答えて

2

あなたはPopupWindowが定義されていないMATLAB evaluates in the base workspace文字ベクトル、としてあなたのコールバックを定義しています。代わりにanonymous functionをコールバックとして使用できます。例えば

fig = figure(); 
a = uicontrol('Parent', fig, 'Style', 'Pushbutton', 'Units', 'Normalized', ... 
       'Position', [0.1 0.1 0.8 0.8], 'String', 'Delete Figure', ... 
       'Callback', @(h,e)delete(fig)); 

は私たちに、ボタンがクリックされたときに閉じますFigureウィンドウを与える:私は&スローを受け入れるように無名関数を定義した

yay

注意離れた2つの入力。これは、グラフィックオブジェクトのコールバックaccept 2 inputs by default、コールバックを実行しているオブジェクトのハンドル、およびイベントデータ構造が原因です。この単純なケースでは、どちらか一方が必要ではありませんが、この情報が保持される状況はたくさんあります(ボタンプレスコールバックのイベントデータなど)。

+0

これは非常に明確で便利です。どうもありがとうございました! –

関連する問題