waitbar

대기 표시줄 대화 상자 만들기 또는 업데이트

앱 디자이너를 사용하고 있거나 uifigure 함수로 앱을 만들 때는 uiprogressdlg를 대신 사용하십시오. 자세한 내용은 GUIDE 마이그레이션 전략 항목을 참조하십시오.

설명

예제

f = waitbar(x,msg)는 지정된 메시지를 갖는 대기 표시줄이 포함된 비모달 대화 상자를 만듭니다. 대기 표시줄은 소수 길이 x입니다. 대화 상자는 대화 상자를 제어하는 코드가 대화 상자를 닫거나, 사용자가 대화 상자 제목 표시줄의 닫기 버튼(X)을 클릭할 때까지 열려 있습니다. Figure 객체는 f로 반환됩니다.

예제

f = waitbar(x,msg,Name,Value)는 대화 상자에서 figure 속성을 설정하는 하나 이상의 이름-값 쌍의 인수를 사용하여 옵션을 추가로 지정합니다. 예를 들어, 'Name','Progress' 는 대화 상자 이름을 Progress로 설정합니다. 다른 모든 입력 인수 다음에 이름-값 쌍 인수를 지정합니다.

waitbar(x)는 현재 대기 표시줄 대화 상자에 있는 표시줄 길이를 x로 업데이트합니다. 일반적으로 x의 그다음 값은 증가하는 값입니다. 값이 감소할 경우 대기 표시줄은 역방향으로 진행됩니다.

waitbar(x,f)는 대기 표시줄 대화 상자 f에 있는 표시줄의 길이를 새 위치 x로 업데이트합니다.

예제

waitbar(x,f,msg)는 대기 표시줄 대화 상자 f에 있는 메시지를 업데이트합니다.

예제

모두 축소

코드의 세 지점에서 대기 표시줄의 소수 길이와 메시지를 업데이트하는 대기 표시줄 대화 상자를 만듭니다.

다음 코드를 사용하여 시간이 오래 걸리는 계산 수행을 시뮬레이션합니다. pause 함수는 첫 번째 대기 표시줄 대화 상자의 figure 객체를 후속 waitbar 함수 호출에 전달합니다. 이러한 방식으로 figure 객체를 전달하면 대화 상자가 다시 생성되지 않고 각 시점에서 업데이트됩니다. 시뮬레이션된 계산이 완료되면 대화 상자가 닫힙니다.

function basicwaitbar
f = waitbar(0,'Please wait...');
pause(.5)

waitbar(.33,f,'Loading your data');
pause(1)

waitbar(.67,f,'Processing your data');
pause(1)

waitbar(1,f,'Finishing');
pause(1)

close(f)
end

취소(Cancel) 버튼을 추가하여 진행 중인 계산을 사용자가 중지할 수 있도록 합니다.

다음 코드를 사용하여 for 루프 반복을 통해 pi의 값에 수렴하도록 하면 반복할 때마다 대기 표시줄과 메시지가 업데이트됩니다. 사용자가 취소(Cancel) 버튼을 클릭하면 MATLAB®은 Figure 응용 프로그램 데이터(appdata)에서 논리형 플래그 'canceling'을 1(true)로 설정합니다. 다음 코드는 for 루프 내에서 이 값을 테스트하고 플래그 값이 1이면 루프를 종료합니다. 응용 프로그램 데이터에 대한 자세한 내용은 데이터를 응용 프로그램 데이터로 저장하기 항목을 참조하십시오.

CreateCancelBtn 콜백을 문자형 벡터 값으로 설정합니다. 이러한 콜백 코드의 경우처럼, 값에 의해 지정된 코드가 단순한 경우가 아니라면 이 방법은 권장되지 않습니다. 자세한 내용은 프로그래밍 방식으로 만든 앱에 대한 콜백 작성하기 항목을 참조하십시오.

function approxpi

f = waitbar(0,'1','Name','Approximating pi...',...
    'CreateCancelBtn','setappdata(gcbf,''canceling'',1)');

setappdata(f,'canceling',0);

% Approximate pi^2/8 as: 1 + 1/9 + 1/25 + 1/49 + ...
pisqover8 = 1;
denom = 3;
valueofpi = sqrt(8 * pisqover8);

steps = 20000;
for step = 1:steps
    % Check for clicked Cancel button
    if getappdata(f,'canceling')
        break
    end
    
    % Update waitbar and message
    waitbar(step/steps,f,sprintf('%12.9f',valueofpi))
    
    % Calculate next estimate 
    pisqover8 = pisqover8 + 1 / (denom * denom);
    denom = denom + 2;
    valueofpi = sqrt(8 * pisqover8);
end

delete(f)
end

입력 인수

모두 축소

대기 표시줄의 소수 길이로, 01 사이의 실수로 지정됩니다. 일반적으로 x의 그다음 값은 증가하는 값입니다. 값이 감소할 경우 대기 표시줄은 역방향으로 진행됩니다.

예: .75

대기 표시줄 메시지로, 문자형 벡터로 구성된 셀형 배열, 문자형 벡터 또는 string형 배열로 지정됩니다. 이 메시지는 대화 상자 내에, 진행률 표시줄 위에 표시됩니다.

  • 메시지를 문자형 벡터로 지정할 경우, 길이가 긴 메시지는 대화 상자 크기에 맞게 줄 바꿈됩니다.

  • 메시지를 문자형 벡터로 구성된 셀형 배열로 지정할 경우, 각 배열 요소 사이에 줄 바꿈이 적용됩니다. 길이가 긴 요소는 대화 상자의 크기에 맞게 줄 바꿈됩니다.

예: 'Please Wait'

예: {'Please wait', 'The operation is processing'}

이전에 만든 대기 표시줄 대화 상자의 figure 객체로, figure 객체가 생성되었을 때 사용된 출력 변수로 지정됩니다.

이름-값 쌍의 인수

선택적으로 Name,Value 인수가 쉼표로 구분되어 지정됩니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. Name은 따옴표 안에 표시해야 합니다. Name1,Value1,...,NameN,ValueN과 같이 여러 개의 이름-값 쌍의 인수를 어떤 순서로든 지정할 수 있습니다.

예: 'Name','Wait Bar'

참고

여기에 나와 있는 속성은 설정 가능한 속성의 일부에 불과합니다. 전체 목록을 보려면 Figure 속성를 참조하십시오.

취소(Cancel) 버튼 콜백으로, 함수 핸들, 셀형 배열 또는 문자형 벡터(권장되지 않음)로 지정됩니다. MATLAB은 취소(Cancel) 버튼 콜백과 figure의 CloseRequestFcn 콜백 값을 callback 인수 값에 지정된 명령으로 설정합니다. 자세한 내용은 프로그래밍 방식으로 만든 앱에 대한 콜백 작성하기 항목을 참조하십시오.

참고

CreateCancelBtn 콜백을 지정할 경우 delete 함수를 호출하여 대기 표시줄 대화 상자를 제거합니다. CreateCancelBtn 콜백을 지정하면 close 함수가 대화 상자를 닫지 않으며 취소(Cancel) 버튼과 닫기(X) 버튼이 응답하지 않습니다. 이러한 상황은 CreateCancelBtn 콜백이 재귀적으로 자신을 반복 호출하기 때문입니다. 이러한 상황에서는 다음 예제처럼 코드를 사용하여 강제로 대기 표시줄을 제거해야 합니다.

set(groot,'ShowHiddenHandles','on')
delete(get(groot,'Children'))
그러나 이러한 명령을 실행하면 대기 표시줄 대화 상자뿐만 아니라 모든 열려 있는 figure가 삭제됩니다.

예: waitbar(.5,'Processing','CreateCancelBtn',@myfun)CreateCancelBtn 콜백 함수를 함수 핸들로 지정합니다.

예: waitbar(.5,'Processing','CreateCancelBtn',{@myfun,x})CreateCancelBtn 콜백 함수를 셀형 배열로 지정합니다. 이 경우 함수는 입력 인수 x를 받습니다.

Figure의 이름으로, 문자형 벡터 또는 string형 스칼라로 지정됩니다.

예: figure('Name','Results')는 Figure의 이름을 'Results'로 설정합니다.

기본적으로 이 이름은 'Figure n'이며, 여기서 n은 정수입니다. Name 속성을 지정하면 Figure의 제목이 'Figure n: name'이 됩니다. Name 값만 표시하려면 IntegerHandle이나 NumberTitle'off'로 설정하십시오.

그리기 가능 영역의 위치와 크기로, [left bottom width height] 형식의 벡터로 지정됩니다. Figure 테두리, 제목 표시줄, 메뉴 모음, 도구 모음은 이 영역에서 제외됩니다.

다음 표에서는 Position 벡터의 각 요소를 설명합니다.

요소설명
left주 디스플레이의 왼쪽 가장자리부터 창의 왼쪽 내부 가장자리까지의 거리. 둘 이상의 모니터를 사용하는 시스템에서는 이 값이 음수일 수 있습니다.

Figure가 도킹된 경우 이 값은 MATLAB 데스크탑 내의 Figure 패널에 대해 상대적입니다.
bottom주 디스플레이의 하단 가장자리부터 창의 내부 하단 가장자리까지의 거리. 둘 이상의 모니터를 사용하는 시스템에서는 이 값이 음수일 수 있습니다.

Figure가 도킹된 경우 이 값은 MATLAB 데스크탑 내의 Figure 패널에 대해 상대적입니다.
widthwaitbar의 오른쪽과 왼쪽 내부 가장자리 사이의 거리.
height창의 상단과 하단 내부 가장자리 사이의 거리.

모든 측정값은 Units 속성으로 지정된 단위로 표시됩니다.

Figure가 도킹되어 있으면 Figure의 Position 속성을 지정할 수 없습니다.

MATLAB Online™에서는 Position 벡터의 bottom 요소와 left 요소가 무시됩니다.

테두리, 제목 표시줄, 메뉴 모음, 도구 모음을 포함하는 완전한 창을 배치하려면 OuterPosition 속성을 사용하십시오.

참고

Windows® 운영 체제에서는 최소 창 너비와 최대 창 크기가 강제로 적용됩니다. 이 제한값을 벗어나는 Figure 크기를 지정할 경우 Figure는 사용자가 지정한 크기가 아니라 이 제한 크기로 표시됩니다.

측정 단위로, 다음 표의 값 중 하나로 지정됩니다.

단위 값설명
'pixels'(디폴트 값)

픽셀.

R2015b부터, 픽셀 단위의 거리는 Windows와 Macintosh 시스템에서 시스템 해상도와 무관하게 적용됩니다. 즉, 다음과 같습니다.

  • Windows 시스템에서 1픽셀은 1/96인치입니다.

  • Macintosh 시스템에서 1픽셀은 1/72인치입니다.

Linux® 시스템에서 픽셀 크기는 시스템 해상도에 의해 결정됩니다.

'normalized'이 단위는 부모 컨테이너에 대해 정규화됩니다. 컨테이너의 왼쪽 아래 코너는 (0,0)에 매핑되고 오른쪽 위 코너는 (1,1)에 매핑됩니다.
'inches'인치.
'centimeters'센티미터.
'points'포인트. 1포인트는 1/72인치와 같습니다(1인치 = 2.54cm).
'characters'

이 단위는 다음과 같이 그래픽스 root 객체의 디폴트 uicontrol 글꼴을 기반으로 합니다.

  • 문자 너비 = 문자 x의 너비.

  • 문자 높이 = 텍스트의 두 줄의 기준선 간 거리.

디폴트 uicontrol 글꼴에 액세스하려면 get(groot,'defaultuicontrolFontName')이나 set(groot,'defaultuicontrolFontName')을 사용하십시오.

MATLAB은 모든 단위를 부모 객체의 왼쪽 아래 코너부터 측정합니다.

이 속성은 Position 속성에 영향을 미칩니다. Units 속성을 변경하는 경우, 디폴트 값을 상정하는 다른 함수에 영향을 미치지 않도록 계산을 완료한 후에 이 속성값을 디폴트 값으로 복원하는 것이 좋습니다.

Units 속성과 Position 속성을 지정하는 순서에 따라 다음과 같이 영향을 미칩니다.

  • Position 속성보다 먼저 Units를 지정하면 MATLAB은 지정한 단위를 사용하여 Position을 설정합니다.

  • Position 속성 다음에 Units 속성을 지정하면 MATLAB은 디폴트 Units를 사용하여 위치를 설정합니다. 그런 다음 MATLAB은 Position 값을 지정한 단위의 상응하는 값으로 변환합니다.

창 스타일로, 다음 중 하나로 지정됩니다.

  • 'normal' — Figure 창은 다른 창에 독립적이며, Figure가 표시되는 동안 다른 창에 액세스할 수 있습니다.

  • 'modal' — Figure는 기존의 모든 Figure 창 위에 표시되어, 맨 앞 Figure가 모달 상태로 존재하는 한 기존 Figure에 액세스할 수 없게 됩니다. 그러나 모달 Figure 이후에 새로 생성된 Figure는 모두 표시됩니다.

    여러 모달 창이 있는 경우 가장 최근에 생성된 창에 포커스가 유지되며, 이 가장 최근에 생성된 창은 숨겨지도록 설정되거나 일반 창 스타일로 돌아가거나 삭제될 때까지 다른 모든 창 위에 계속 남아 있습니다. 창이 사라지거나 WindowStyle normal로 돌아가거나 삭제되면 포커스는 마지막으로 포커스가 있던 창으로 복귀됩니다.

  • 'docked' — Figure가 데스크탑 또는 문서 창에 표시됩니다. WindowStyle 속성이 'docked'로 설정되어 있으면 DockControls 속성을 'off'로 설정할 수 없습니다. MATLAB Online에서는 'docked' 옵션이 지원되지 않습니다.

참고

다음은 WindowStyle 속성의 몇 가지 중요한 특성과 권장되는 모범 사례입니다.

  • UI 창을 만들 때는 항상 WindowStyle 속성을 지정하십시오. 또한 Figure의 Resize, Position, OuterPosition 속성 중 하나를 설정하려는 경우에는 먼저 WindowStyle 속성을 설정하십시오.

  • Figure의 WindowStyle 속성은 Figure가 표시되도록 설정되거나 Figure에 자식이 포함된 경우 등 언제든지 사용자가 변경할 수 있습니다. 그러나 일부 시스템에서는 이 속성을 설정하면 시스템의 일반 창과 모달 창 구현 방식에 따라 Figure가 깜박이거나 사라졌다가 다시 나타날 수 있습니다. 최적의 시각적 결과를 얻으려면 생성 시에 또는 Figure가 표시되지 않을 때 WindowStyle 속성을 설정하십시오.

  • Figure에서 reset을 호출해도 WindowStyle 속성의 값은 변경되지 않습니다.

모달 창 스타일 동작

WindowStyle'modal'로 설정된 경우, Figure 창은 창이 표시되어 있는 한 모든 MATLAB 창에 대한 모든 키보드와 마우스 동작을 트래핑합니다. MATLAB이 아닌 다른 응용 프로그램에 속해 있는 창에는 영향을 미치지 않습니다.

모달 Figure에 포커스가 있는 상태에서 Ctrl+C를 입력하면 해당 Figure는 'normal' WindowStyle 속성 설정으로 되돌아갑니다. 따라서 사용자가 명령줄에 입력할 수 있습니다.

WindowStyle 속성이 'modal'로 설정되고 Visible 속성이 'off'로 설정된 Figure는 MATLAB에서 표시 가능해질 때까지 모달 형식으로 동작하지 않습니다. 따라서 모달 창을 삭제하는 대신 나중에 재사용할 수 있도록 숨겨둘 수 있습니다.

모달 Figure는 메뉴의 자식, 내장 메뉴 또는 도구 모음을 표시하지 않습니다. 그러나 모달 Figure에서 메뉴를 만들거나 메뉴의 자식이 있는 Figure에서 WindowStyle 속성 설정을 'modal'로 변경하는 것은 오류가 아닙니다. 이유는, Menu 객체가 존재하고 있으며 Figure가 이를 유지하기 때문입니다. Figure의 WindowStyle 속성을 'normal'로 재설정하면 메뉴가 표시됩니다.

세부 정보

모두 축소

모달 대화 상자

모달 대화 상자에서는 모달 대화 상자 조작이 끝나기 전에 다른 MATLAB 창과 상호 작용을 할 수 없습니다.

비모달 대화 상자

비모달 대화 상자에서는 비모달 대화 상자의 조작이 끝나기 전에 다른 MATLAB 창과 상호 작용을 할 수 있습니다. 비모달 대화 상자는 normal이라고도 합니다.

대기 표시줄

왼쪽에서 오른쪽으로 점진적으로 표시줄을 색으로 채움으로써 계산 진행에 따른 계산 완료율을 나타내는 표시줄입니다. 대기 표시줄은 진행률 표시줄이라고도 합니다.

참고 항목

| | |

R2006a 이전에 개발됨