MATLAB: Progress indicator in GUI

guipushbutton

Hey,
I have a GUI with a pushbutton. Depending on what the user previously selected, Matlab may take a few seconds to perform the task behind the pushbutton. I would like a simple indicator in the GUI that the pushbutton task is being performed and when it is done. I originally tried changing the pushbutton string to say "wait" during processing and then back to the original string afterwards. I did this with the following code:
name = get(handles.pushbutton, 'String');
set(handles.pushbutton, 'String', 'Wait');
do_whatever();
set(handles.pushbutton, 'String', name);
However, when I tried this, Matlab never updated the pushbutton string (at least, that I could tell). Is there a way to force Matlab to update the string before handling the next command? Or is there a better way to do this?
Thanks, Tobyn

Best Answer

Try in this way (you can also add progress bar):
function test
uicontrol('Style','pushbutton','String','Start','callback',@pb_clbck)
function pb_clbck(src,evnt)
name = get(src,'String');
set(src,'String','Wait');
h = waitbar(0,'Please wait');
for k=10:-1:1
waitbar((11-k)/10,h)
disp(k)
pause(1)
end
close(h)
set(src,'String',name);
In this case Matlab refreshes strings.
Eventually you can use refresh function to redraw current figure:
name = get(handles.pushbutton, 'String');
set(handles.pushbutton, 'String', 'Wait');
do_whatever();
set(handles.pushbutton, 'String', name);
refresh(gcf)