Pass a value from callback function in GUI to an element of vector in Workspace !

1 次查看(过去 30 天)
Hi. I have written a GUI without GUIDE. it first reads an image and some point from the main script and I want it to assign a value to each point.
in my gui, I iteratively ask the user to push two buttons based on the picture he sees. Pushing the button, I want a value (1 or 2) to be stored in my main (not GUI) workspace in the "label" vector.
I first tried to store all the values in one vector in GUI ("labelVector") workspace and then pass it to the base workspace: (for some reasons I had to define the i as a global variable)
function falsePositive_Callback(hobject, ~, labelVector)
global i
labelVector(i)=1;
i=i+1;
end
the problem is that with this code everything is good before the end of the function. when the callback function ends, the value comes back to 0.
In the second attemps, in the callback function I used the function:
evalin('base','label(i)=1');
to instantly pass the variable that I want to the label vector in the 'base' workspace.
At this time, the problem is that only the first value changes to 1 and no matter how many iterations I push the button, only the first values changes.
can anyone address me through my problem? Thanks.
  3 个评论
Jahandar Jahanipour
*assignin * can be used for a single variable. not a vector.
because I have my main code, in the middle, a gui will run and askthe user for the information(labels), it stores the information and the code will be continues based on the new information received from the user.
Robert
Robert 2016-5-17
I'm not able to test this right now, but you might try
evalin('base','label(end+1)=1');
This should always append the value to the end of the list and doesn't require your global indexing variable.

请先登录,再进行评论。

回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Migrate GUIDE Apps 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by