3

いくつかのコールバック関数を実行するのに長い時間が必要な Matlab GUI があります。さらに、これらの関数には次のコードが含まれます。

 drawnow('expose');
 pause(handles.data.delay);

ユーザーが他のボタンを押した場合にデータの不整合を避けるために、これらのコールバックの実行が中断されるのを避けたいと考えています。したがって、図の設定を次のように変更します。

set(handles.figure, 'BusyAction','cancel', 'Interruptible','off');

ただし、コールバックは引き続き中断されます。どうすれば回避できますか?

注: 問題は、'BusyAction' と 'Interruptible' の値を GUI のすべてのコントロールに伝達する必要があることだと思います。それを自動的に行う方法はありますか? たとえば、GUI を生成する前にデフォルト値を変更します。

4

1 に答える 1

3

任意のプロパティをすべての UI オブジェクトに伝達する最も速くてクリーンな方法は、次のfindobjとおりです。

set(findobj('Type','uicontrol'), 'BusyAction','cancel', 'Interruptible','off');
于 2013-04-03T07:58:05.840 に答える