2016-04-16 4 views
3

これは基本的な質問ですが、私はmatlabのドキュメントやgoogleで解決策を見つけることができませんでした。Matlabのウェイトバーのサイズを設定するには?

  • 私のウエイトバーはボタン二行のテキストをキャンセルしているが、テキストは文句を言わないウエイトバーの内側に収まります。私はちょうどオートフィットを必要としたり、ウェイトバーの高さを上げたりするだけです。

  • 「x」をクリックしてウェイトバーを閉じることができないのはなぜですか?私がそれを閉じることができる唯一の方法は、delete(h)とタイプすることです。これは、[キャンセル]ボタンを追加した後にのみ発生します。

ウエイトバーの作成:ループ内

h = waitbar(0,'Please wait...','CreateCancelBtn',... 
    'setappdata(gcbf,''canceling'',1)',... 
    'Position',[100 100 200 200]); % Position' does not work 

str = sprintf('Noise: %.2f (%d/%d). Planes: %.2f (%d/%d).\nOveral: %.1f%%',... 
    noiseAmp,noiseId,noiseCount,slice,sliceId,sliceCount,100*perc); 
    waitbar(perc,h, str); 

答えて

1

あなたは典型的に上書きされますCreateCancelBtnコールバックを設定するので、キャンセルボタンを使用してwaitbar削除することができません動作とあなたのコールバックの内部それを削除するので、それを削除しないでください。

アプリケーションデータを削除するようにコールバックを更新することができます。

h = waitbar(0,'Please wait...','CreateCancelBtn',... 
       'setappdata(gcbf,''canceling'',1); delete(gcbf);') 

限り位置を変えるなど、あなたのコンストラクタで動作するようには思えませんが、waitbarの作成後にそれを変更することができます。

set(h, 'Position', [100 100 200 200]) 

この内容waitbarの全ての位置を変更しないことに注意してください。これは、MATLABがwaitbarのサイズが変更されないと仮定して、Pixel単位を使用してすべてのコンポーネントの位置を定義するためです。

この作業を行うには少しトリックがあります。最初に(サイズ変更する前に)waitbarのすべてのコンポーネントのUnitsNormalizedに変更します。サイズを変更すると、すべてのコンポーネントが適切に移動されます。

h = waitbar(0, 'Please Wait', 'CreateCancelBtn', 'disp(h)'); 
set(findall(h), 'Units', 'Normalized') 
set(h, 'Units', 'Pixels', 'Position', [100 100 200 200]) 
+0

ありがとう!あなたが言ったようにポジションが働きます。終了については、コードの実行を停止しても、私はwaitbarを閉じることができません。 "X"がウィンドウを閉じ、キャンセルボタンの操作もできる方法はありますか?または "X"だけ削除(h)します。 Xをクリックするとウィンドウを閉じることができないのはばかげている。 – Pedro77

+0

@ Pedro77どのバージョンのMATLABを使っているのですか?それは2015bで私のためにうまく動作します – Suever

+0

私は2016を使用しています。はい、クローズもキャンセルします。ごめんなさい。しかし、エラーが表示されたり、キャンセルをクリックしてウェイトバーを閉じないと、Xをクリックして閉じることができなくなり、delete(h)と入力する必要があります。 – Pedro77

関連する問題