waitbar
ウェイト バー ダイアログ ボックスの作成と更新
説明
メモ
App Designer 内および関数 uifigure
で作成されたアプリ内では、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
入力引数
x
— ウェイト バーの割合の長さ
実数
ウェイト バーの割合の長さ。0
~ 1
の実数として指定します。x
の連続値は通常増加します。減少すると、ウェイト バーが逆方向に進みます。
例: .75
msg
— ウェイト バーのメッセージ
文字ベクトル | 文字ベクトルの cell 配列 | string 配列
ウェイト バーのメッセージ。文字ベクトル、文字ベクトルの cell 配列、または string 配列として指定します。このメッセージは、ダイアログ ボックス内にある進行状況バーの上に表示されます。
メッセージを文字ベクトルとして指定すると、長いメッセージはダイアログ ボックスに納まるように折り返されます。
メッセージを cell 配列として指定すると、各配列要素間に改行が挿入されます。長い要素はダイアログ ボックスに納まるように折り返されます。
例: 'Please Wait'
例: {'Please wait', 'The operation is processing'}
f
— figure オブジェクト
figure オブジェクト
前に作成したウェイト バー ダイアログ ボックスの figure オブジェクト。その figure オブジェクトの作成時に使用した出力変数として指定します。
名前と値の引数
引数のオプションのペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで Name
は引数名で、Value
は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。
R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name
を引用符で囲みます。
例: 'Name','Wait Bar'
メモ
ここでは、設定できるプロパティの一部だけを紹介しています。完全な一覧については、Figure のプロパティ を参照してください。
CreateCancelBtn
— [キャンセル] ボタンのコールバック
関数ハンドル | cell 配列 | 文字ベクトル
[キャンセル] ボタンのコールバック。関数ハンドル、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
を受け入れます。
Name
— 名前
''
(既定値) | 文字ベクトル | string スカラー
Figure の名前。文字ベクトルまたは string スカラーとして指定します。
例: figure('Name','Results')
は、Figure の名前を 'Results'
に設定します。
既定の名前は 'Figure n'
です。ここで、n
は整数です。Name
プロパティを指定した場合、Figure のタイトルは 'Figure n: name'
になります。Name
の値のみを表示する場合は、IntegerHandle
または NumberTitle
を 'off'
に設定します。
Position
— 描画可能領域の位置とサイズ
[left bottom width height]
描画可能領域の位置とサイズ。[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 は指定されたサイズではなく、これらの範囲に従います。
Units
— 測定の単位
'pixels'
(既定値) | 'normalized'
| 'inches'
| 'centimeters'
| 'points'
| 'characters'
測定の単位。次の表のいずれかの値として指定します。
単位の値 | 説明 |
---|---|
'pixels' (既定) | ピクセル。 R2015b 以降、Windows および Macintosh システムにおいて、ピクセル単位の距離はシステム解像度に依存しません。
Linux® システムでは、ピクセルのサイズは使用しているシステムの解像度によって決まります。 |
'normalized' | これらの単位は親コンテナーを基準として正規化されます。コンテナーの左下隅が (0,0) で、右上隅が (1,1) になります。 |
'inches' | インチ。 |
'centimeters' | センチメートル。 |
'points' | ポイント。1 ポイントは 1/72 インチです。 |
'characters' | これらの単位は、グラフィックス ルート オブジェクトの既定の uicontrol フォントを基にしています。
既定の uicontrol フォントにアクセスするには、 |
MATLAB ではすべての単位を親オブジェクトの左下隅から測定します。
このプロパティは Position
プロパティに影響します。Units
プロパティを変更した場合、この既定値を想定する他の関数に影響を与えないように、計算の完了後に値を既定値に戻すことを検討してください。
Units
プロパティと Position
プロパティを指定する順序は次のように影響します。
Position
プロパティの前にUnits
プロパティを指定する場合、MATLAB は指定した単位を使用してPosition
を設定します。Position
プロパティの後にUnits
プロパティを指定する場合、MATLAB は既定のUnits
を使用して位置を設定します。その後、MATLAB はPosition
の値を、指定した単位における等価の値に変換します。
WindowStyle
— ウィンドウ スタイル
'normal'
(既定値) | 'modal'
| 'docked'
ウィンドウ スタイル。次のいずれかとして指定します。
'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 コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)