3

プログレスバーを表示する必要があるMATLABGUIに取り組んでいます。この関数には2つの問題がありwaitbarます。

  1. プログレスバーが表示されている間、ユーザーがGUIで他のことを実行できないように、プログレスバーをモーダルにしたい。

  2. バーの右上隅に最小化ボタンと閉じるボタンがあります(他のウィンドウとほとんど同じです)。閉じるボタンを押すと、プログレスバーが閉じます。ユーザーがバーを閉じられないように、このボタンを非表示にするか無効にします。

これらの動作をどのように実装できますか?

4

2 に答える 2

5

例:

plot(sin(1:100))
h = waitbar(0, 'Please wait...');
set(h, 'WindowStyle','modal', 'CloseRequestFcn','');
for i=1:10
    waitbar(i/10, h);
    pause(.5)
end
delete(h)

スクリーンショット

空の文字列に設定CloseRequestFcnすると、閉じるボタンをクリックしても何も起こりません。ループが終了するのを待つ必要があります。

実行中の計算を強制終了することもできますCtrl+c(これは良いことだと思います。結局、ユーザーを煩わせたくないのです!)

于 2012-07-20T14:20:25.810 に答える
0

1番については、Matlab内のスレッドを調べる必要があります。必要な機能にアクセスするには、並列コンピューティングツールボックスが必要になる可能性があります。詳細については、こちらをご覧ください。

2番目まで。GUIのコードでclose関数をオーバーライドできるはずです。

それはこれに沿ったものになるでしょう:

function MyWaitBar_CloseRequestFcn(hObject, eventdata, handles)

delete(hObject); % This of course deletes the object and we don't want this.  

したがって、関数を空のままにしておきます。ただし、いつか閉じることを忘れないでください。

于 2012-07-20T00:42:58.160 に答える