open a variable in a function
14 次查看(过去 30 天)
显示 更早的评论
Hello,
I have a dialog box created within a function. Within the dialog box is a pushbutton with a callback that is planned to create a variable and then opens it in the variable editor, all this while the dialog box is still active. If i close the variable editor and press the same button again, it should open the variable in the variable editor again.
I have tried using openvar() but openvar opens variables from the workspace in scope, which is the 'base' workspace during a callback. The variable is created in the callback and thus openvar() does not work for me.
how can I open the variable created in the callback in the variable editor without the use of evalin or assignin?
Thanks!
2 个评论
Walter Roberson
2019-1-31
编辑:Walter Roberson
2019-1-31
The scope for callbacks is the base workspace only for callbacks specified as character vector or a cell array in which the first element is a character vector .otherwise the scope would be the function that is the callback .
回答(2 个)
Jan
2019-1-31
编辑:Jan
2019-1-31
I cannot try it currently. Although the callback is called from the base workspace, the current workspace inside the callback is the callback's one. So you can create the variable there:
function YourCallback(hObject, EventData, handles)
X = rand(2, 2);
openvar('X');
pause(20); % For this demonstration only!!!
end
Does this work? Then the assumption, that the Base workspace is used, is not correct. Is your problem solved then?
7 个评论
Guillaume
2019-2-1
Possibly a drawnow before calling uiwait may display the variables. However, it's never a good idea to suspend a UI callback in order to allow more UI interaction so it may be that it doesn't work either. I think it's clear that the variable editor is not meant to be used as part of a GUI.
is it alright if I leave it without accepting an answer?
Maybe write your own answer summarising the discussion and accept it. Just so, the question has some sort of closure.
Jan
2019-2-1
"is it alright if I leave it without accepting an answer?"
Yes, this is okay. It is useful for the forum, if you write your own answer and accept this if you've found a working solution.
Guillaume
2019-1-31
"the workspace in scope, which is the 'base' workspace during a callback"
Not at all. The workspace in scope is that of the callback, not the base workspace. However, that workspace is very short lived and is destroyed as soon as the callback completes. So any callback variable shown in the variable editor won't be displayed anymore when the callback returns. Instead you'll see The variable xxx does not exist.
I don't think there's a way to use the variable editor in conjunction with a GUI. If there is, it's probably going to involve some ugly hacks. Perhaps your best bet would be to use a uitable instead.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Surrogate Optimization 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!