2017-09-19 5 views
1

Ich bekomme den Fehler so, wenn ich 'X' gedrückt, um das Popup-Fenster zu schließen. HierFehler mit DELETE() MATLAB GUI

ist der Fehler, den ich bekommen:

Undefined function or variable 'PopupWindow'. 

Error while evaluating UIControl Callback 

Hier ist der Code ich benutze:

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);']); 

Antwort

2

Sie haben Ihren Rückruf als Zeichenvektor definiert, die MATLAB evaluates in the base workspace wo PopupWindow nicht definiert ist. Sie können stattdessen einen anonymous function als Rückruf verwenden.

Zum Beispiel:

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)); 

gibt uns eine Abbildung Fenster wird geschlossen, wenn die Schaltfläche geklickt wird:

yay

Beachten Sie, dass ich habe die anonyme Funktion definiert & Wurf akzeptieren weg zwei Eingänge. Dies liegt daran, dass die Callbacks der Grafikobjekte accept 2 inputs by default das Handle des Objekts sind, dessen Callback ausgeführt wird, und die Ereignisdatenstruktur. In diesem einfachen Fall werden wir keines benötigen, aber es gibt viele Situationen, in denen diese Information beibehalten würde (z. B. die Ereignisdaten für einen Tastendruckrückruf).

+0

Das ist sehr klar und nützlich. Vielen Dank! –