プログレスバーを表示する必要があるMATLABGUIに取り組んでいます。この関数には2つの問題がありwaitbar
ます。
プログレスバーが表示されている間、ユーザーがGUIで他のことを実行できないように、プログレスバーをモーダルにしたい。
バーの右上隅に最小化ボタンと閉じるボタンがあります(他のウィンドウとほとんど同じです)。閉じるボタンを押すと、プログレスバーが閉じます。ユーザーがバーを閉じられないように、このボタンを非表示にするか無効にします。
これらの動作をどのように実装できますか?
プログレスバーを表示する必要があるMATLABGUIに取り組んでいます。この関数には2つの問題がありwaitbar
ます。
プログレスバーが表示されている間、ユーザーがGUIで他のことを実行できないように、プログレスバーをモーダルにしたい。
バーの右上隅に最小化ボタンと閉じるボタンがあります(他のウィンドウとほとんど同じです)。閉じるボタンを押すと、プログレスバーが閉じます。ユーザーがバーを閉じられないように、このボタンを非表示にするか無効にします。
これらの動作をどのように実装できますか?
例:
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(これは良いことだと思います。結局、ユーザーを煩わせたくないのです!)
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.
したがって、関数を空のままにしておきます。ただし、いつか閉じることを忘れないでください。