progress indicator in GUI

조회 수: 10 (최근 30일)
Tobyn VanVeghten
Tobyn VanVeghten 2011년 9월 16일
댓글: dominic diston 2018년 9월 26일
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

채택된 답변

Grzegorz Knor
Grzegorz Knor 2011년 9월 16일
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)
  댓글 수: 2
Tobyn VanVeghten
Tobyn VanVeghten 2011년 9월 16일
Thanks! That should work well.
Tobyn
dominic diston
dominic diston 2018년 9월 26일
Thanks for this. I've learned something new. Really useful for I'm doing right now.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Desktop에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by