How to pass/share data between GUIs?

6 views (last 30 days)
I am trying to make a GUI that:
1stGUI: enter the number of tasks to run, then click "next" button to open another GUI to run the task.
% --- Executes on button press in Next_Button.
function Next_Button_Callback(hObject, eventdata, handles)
% hObject handle to Next_Button (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
if get(handles.Num_Task, 'Value') ~= 0
GUI_2
else
errordlg('Input cannot be zero.','Task Num. 0')
end
2ndGUI: run the task for the number of times entered in the 1stGUI.
So the question is, how do I access the "number of tasks" from the 1stGUI within the 2ndGUI, and also, 2ndGUI will run "number of tasks" times, and creates a matrix as the row number is "number of tasks" to store the data.
I read about "guidata", but did not get it to work.

Accepted Answer

Geoff Hayes
Geoff Hayes on 2 Jul 2019
Edited: Geoff Hayes on 2 Jul 2019
Peng - please see https://www.mathworks.com/matlabcentral/answers/146215-pass-data-between-gui-s for an example of sharing data between GUIs. Your second GUI will need to be able to find the first GUI (via its tag/name) and then get the handles object for that first GUI.
In the OpenFcn of your second GUI, you could add code similar to
% get the handle of Gui1
h = findobj('Tag','Gui1');
% if exists (not empty)
if ~isempty(h)
% get handles and other user-defined data associated to Gui1
handlesGui1 = guidata(h);
% get the number of tasks
numberOfTasks = get(handlesGui1.Num_Task, 'Value')
end
  3 Comments
Geoff Hayes
Geoff Hayes on 2 Jul 2019
In the Property Inspector for GPEC_Task_Generator, set the HandleVisibility property to on, and confirm that the Tag property is set to GPEC_Task_Generator.
Peng Zhao
Peng Zhao on 3 Jul 2019
Thank you, it is now working!

Sign in to comment.

More Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!