waitbar
ウェイト バー ダイアログ ボックスの作成と更新
説明
メモ
waitbar よりも uiprogressdlg の方が追加のカスタマイズ オプションがあるため推奨されます。
は、ウェイト バーと指定されたメッセージを含む非モーダルのダイアログ ボックスを作成します。ウェイト バーは割合の長さ f = waitbar(x,msg)x です。ダイアログ ボックスは、制御するコードで閉じられるかユーザーがダイアログ ボックスのタイトル バーにある閉じるボタン (X) をクリックするまで開いたままになります。f として Figure オブジェクトが返されます。
複数のアプリ ウィンドウ、MATLAB® デスクトップ、または Simulink® にウェイト バー ダイアログ ボックスを表示し、そのダイアログ ボックスに応答する前にそれらを操作できるようにする場合は、関数 waitbar を使用します。
は、ダイアログ ボックスの f = waitbar(x,msg,Name,Value)figure プロパティを設定する 1 つ以上の名前と値のペアの引数を使用して追加のオプションを指定します。たとえば、'Name','Progress' はダイアログ ボックスの名前を Progress に設定します。名前と値のペアの引数は、その他すべての入力引数の後に指定します。
例
コード内の 3 つのポイントでウェイト バーの割合の長さとメッセージを更新するウェイト バー ダイアログ ボックスを作成します。
このコードを使用して時間がかかる計算の実行をシミュレートします。関数 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

ユーザーが進行中の計算を中止できるように [キャンセル] ボタンを追加します。
次のコードを使用して、pi の値を for ループ反復で収束し、各反復でウェイト バーとメッセージを更新します。ユーザーが [キャンセル] ボタンをクリックすると、MATLAB で Figure のアプリケーション データ (appdata) の logical フラグ '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

入力引数
ウェイト バーの割合の長さ。0 ~ 1 の実数として指定します。x の連続値は通常増加します。減少すると、ウェイト バーが逆方向に進みます。
例: .75
ウェイト バーのメッセージ。文字ベクトル、文字ベクトルの cell 配列、または string 配列として指定します。このメッセージは、ダイアログ ボックス内にある進行状況バーの上に表示されます。
メッセージを文字ベクトルとして指定すると、長いメッセージはダイアログ ボックスに納まるように折り返されます。
メッセージを cell 配列として指定すると、各配列要素間に改行が挿入されます。長い要素はダイアログ ボックスに納まるように折り返されます。
例: 'Please Wait'
例: {'Please wait', 'The operation is processing'}
前に作成したウェイト バー ダイアログ ボックスの figure オブジェクト。その figure オブジェクトの作成時に使用した出力変数として指定します。
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。
R2021a より前では、コンマを使用して名前と値をそれぞれ区切り、Name を引用符で囲みます。
例: 'Name','Wait Bar'
メモ
ここでは、設定できるプロパティの一部だけを紹介しています。完全な一覧については、Figure を参照してください。
[キャンセル] ボタンのコールバック。関数ハンドル、cell 配列、または文字ベクトル (非推奨) として指定します。MATLAB は、[キャンセル] ボタンのコールバックと Figure の CloseRequestFcn コールバックの値の両方を callback 引数の値で指定されたコマンドに設定します。詳細については、プログラムで作成したアプリ用のコールバックの作成を参照してください。
メモ
CreateCancelBtn コールバックを指定するときは、関数 delete を呼び出してウェイト バー ダイアログ ボックスを削除します。CreateCancelBtn コールバックを指定すると、関数 close でダイアログ ボックスが閉じられず、[キャンセル] ボタンと閉じるボタン (X) が応答しなくなります。これは、CreateCancelBtn コールバックが再帰的に呼び出されるためです。このような場合は、次のようなコードを使用してウェイト バーを強制的に削除しなければなりません。
set(groot,'ShowHiddenHandles','on') delete(get(groot,'Children'))
例: waitbar(.5,'Processing','CreateCancelBtn',@myfun) は、CreateCancelBtn コールバック関数を関数ハンドルとして指定します。
例: waitbar(.5,'Processing','CreateCancelBtn',{@myfun,x}) は、CreateCancelBtn コールバック関数を cell 配列として指定します。この場合、この関数は入力引数 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 パネルを基準にした値になります。 |
width | waitbar の内側の左右の端の間の距離。 |
height | ウィンドウ内側の上下の端の距離。 |
すべての測定値は、Units プロパティで指定した単位で表されます。
Figure がドッキングしているときには、Figure の Position プロパティは指定できません。
MATLAB Online™ では、Position ベクトルの bottom 要素および left 要素は無視されます。
境界線、タイトル バー、メニュー バーおよびツール バーを含むウィンドウ全体を配置するには、OuterPosition プロパティを使用します。
メモ
Windows® オペレーティング システムでは、最小ウィンドウ幅と最大ウィンドウ サイズが適用されます。これらの範囲を超える Figure サイズを指定した場合、表示される Figure は指定されたサイズではなく、これらの範囲に従います。
測定の単位。次の表のいずれかの値として指定します。
| 単位の値 | 説明 |
|---|---|
'points' (既定) | ポイント。1 ポイントは 1/72 インチです。 |
'pixels' | ピクセル。 Windows システムおよび Macintosh システムでは、ピクセルのサイズは 1/96 インチです。このサイズはシステムの解像度に依存しません。 Linux® システムでは、ピクセルのサイズは使用しているシステムの解像度によって決まります。 |
'normalized' | これらの単位は親コンテナーを基準として正規化されます。コンテナーの左下隅が (0,0) で、右上隅が (1,1) になります。 |
'inches' | インチ。 |
'centimeters' | センチメートル。 |
'characters' | これらの単位は、グラフィックス ルート オブジェクトの既定の uicontrol フォントを基にしています。
既定の uicontrol フォントにアクセスするには、 |
MATLAB ではすべての単位を親オブジェクトの左下隅から測定します。
このプロパティは Position プロパティに影響します。Units プロパティを変更した場合、この既定値を想定する他の関数に影響を与えないように、計算の完了後に値を既定値に戻すことを検討してください。
Units プロパティと Position プロパティを指定する順序は次のように影響します。
Positionプロパティの前にUnitsプロパティを指定する場合、MATLAB は指定した単位を使用してPositionを設定します。Positionプロパティの後にUnitsプロパティを指定する場合、MATLAB は既定のUnitsを使用して位置を設定します。その後、MATLAB はPositionの値を、指定した単位における等価の値に変換します。
ウィンドウ スタイル。次のいずれかとして指定します。
'normal'— Figure ウィンドウは他のウィンドウから独立しており、この Figure の表示中に他のウィンドウにアクセスできます。'modal'— この Figure は、既存のすべての Figure ウィンドウの上に表示されます。この一番上に表示された Figure が存在してモーダルな状態である限り、既存のウィンドウへのアクセスができなくなります。ただし、モーダルな Figure の後に作成された新しい Figure は表示されます。複数のモーダルなウィンドウが存在する場合、最後に作成されたウィンドウがフォーカスされ、他のすべてのウィンドウの前面に表示されます。この状態は、不可視になるか、通常のウィンドウ スタイルに戻るか、削除されるまで継続します。継続が終了した場合、フォーカスは、最後にフォーカスされたウィンドウに戻ります。
'docked'— Figure はデスクトップまたはドキュメント ウィンドウに表示されます。WindowStyleプロパティが'docked'に設定されている場合には、DockControlsプロパティを'off'に設定できません。'docked'オプションは、MATLAB Online でサポートされていません。
メモ
WindowStyle プロパティにはいくつかの重要な特徴と推奨されるベスト プラクティスがあります。
UI ウィンドウを作成するときは、常に
WindowStyleプロパティを指定します。さらに Figure のResize、PositionまたはOuterPositionプロパティも設定する場合は、WindowStyleプロパティを最初に設定します。Figure の
WindowStyleプロパティは、Figure が可視な場合や子オブジェクトを含む場合を含め、いつでも変更できます。ただし、一部のシステムではノーマル ウィンドウとモーダル ウィンドウの実装によっては、このプロパティを設定することで、Figure の点滅や非表示後に再表示される現象が発生する場合もあります。視覚的に最良な結果を得るには、WindowStyleプロパティの設定は、Figure の作成時または非表示のときに行います。Figure で
resetを呼び出してもWindowStyleプロパティ値は変更されません。
モーダル ウィンドウ スタイルの動作
WindowStyle が 'modal' に設定されている場合、Figure ウィンドウが可視である限り、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 ウィンドウを操作できます。非モーダル ダイアログ ボックスはノーマル ダイアログ ボックスとも呼ばれます。
計算の進行に伴ってバーを左から右に塗りつぶしていくことにより、計算が終了した割合を示すインジケーターです。ウェイト バーは進行状況バーとも呼ばれます。
ヒント
単一ウィンドウの App Designer または
uifigureベースのアプリ向けにモーダル進行状況ダイアログ ボックスを作成するには、代わりに関数uiprogressdlgを使用します。
バージョン履歴
R2006a より前に導入
参考
close | delete | getappdata | setappdata | uiprogressdlg
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)