Ошибка при использовании delete() MATLAB GUI
Я получаю такую ошибку, когда нажимаю "X", чтобы закрыть всплывающее окно.
Вот ошибка, которую я получаю:
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);']);
1 ответ
Вы определили свой обратный вызов как символьный вектор, который MATLAB оценивает в базовой рабочей области, где PopupWindow
не определено. Вместо этого вы можете использовать анонимную функцию в качестве обратного вызова.
Например:
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));
Дает нам окно с рисунком, которое закрывается при нажатии кнопки:
Обратите внимание, что я определил анонимную функцию, чтобы принимать и отбрасывать два ввода. Это связано с тем, что обратные вызовы графического объекта по умолчанию принимают 2 входа: дескриптор объекта, для которого выполняется обратный вызов, и структуру данных события. В этом простом случае мы не нуждаемся ни в одном, но во многих ситуациях эта информация будет сохранена (например, данные события для обратного вызова при нажатии кнопки).