2017-12-13 8 views
1

グラフィックインターフェイスを(手動で)作成していますが、既定値をリセットするリセットボタンが必要です。あなたが本当に最も簡単な方法は、ちょうどそれが再びそれを閉じることであろうゼロからあなたのGUIをやり直したい場合はグラフィカルユーザーインターフェイスの既定値をリセットする方法

私はすでにこの

H.but(3) = uicontrol('Units','normalized', ... 

    'BackgroundColor',[1 0.7 1], ... 
    'Callback','MyFunction(''Reset'');', ... 
    'FontSize',12, ... 
    'Position',[0.04 0.54 0.1 0.05 ], ... 
    'String','Reset'); 

case 'Reset' 
clear all % Is not working and I think that isn't that I expect 
set(findobj(H.fig,'style','edit', '-or','style','text'),'string','') % H is a global variable. This trial don't give the default value, it just clear certain boxes 
+0

'case'ステートメントは何をすると思いますか? 'case'は' switch'ブロック内にのみ存在し、定義された 'MyFunction'コールバック関数内に実際にコールバックコードを持ちたいとします。 – Wolfie

+0

はい私は自分の機能を作り、ボタンといくつかのプロットをスイッチで定義し、最後にはインターフェースをリセットしたい –

+2

あなたが提供したコードで問題を診断することは不可能です。これがあなたのコードのすべてであれば、それは正しいよりも間違っています。これがあなたのコードのサブセットであれば、残りの関連するコードを投稿してください。質問をより明確にするか、それが未回答/閉じられることを期待してください。 – Wolfie

答えて

0

をコーディングします。ボタンのコールバックから行うことができます。私は新しい機能を指摘しましたrestartGUI。それはあなたのメインGUIまたはそれ自身のmファイルのサブファンクションです。

あなたの質問は細部には非常に軽いので、いくつかの詳細についてはお手伝いできませんが、これはあなたに一般的な考えを与えるはずです。

restartGUI機能であなたが望むものではない場合は、uicontrolsなどの各状態を手動でリセットしなければなりません(私たちが見ることができないものは何でも) 。

H.but(3) = uicontrol('Units','normalized', ... 
    'BackgroundColor',[1 0.7 1], ... 
    'Callback',@restartGUI, ... 
    'FontSize',12, ... 
    'Position',[0.04 0.54 0.1 0.05 ], ... 
    'String','Reset'); 

% <<<< THE rest of your code >>> 

function restartGUI(hObject,varargin) 
global H 
close(H.fig) %Assuming H.fig the main GUI window. 
%Call the GUI again which will restart it. 
yourGUIFunction 

編集:グローバルHを使用して閉じる。

0

通常、関連するすべてのコントロールプロパティ(チェックボックスの状態、編集可能なテキストボックスの文字列など)を適切なデフォルト値にリセットし、関連するすべての変数値を設定するGUI用の特定のreset_gui関数を作成することを好みます

function example_reset_gui 

    % Initialize GUI: 
    hFigure = figure(); 
    uicontrol('Style', 'edit', 'Position', [20 100 100 25]); 
    uicontrol('Style', 'edit', 'Position', [20 65 100 25]); 
    uicontrol('Style', 'push', 'Position', [20 20 60 30], ... 
      'String', 'Reset', 'Callback', @reset_fcn); 
    drawnow 

    % Collect default states: 
    [defaultState{1:3}] = get_default_state(hFigure); 

    % Nested reset function: 
    function reset_fcn(~, ~) 
    set(defaultState{:}); 
    end 

end 

% Local function: 
function [hArray, propArray, valueArray] = get_default_state(hFigure) 
    hArray = findall(hFigure, 'Type', 'uicontrol'); 
    propArray = fieldnames(set(hArray(1))); 
    valueArray = get(hArray, propArray); 
end 

これは作成しています。あなたはそれらの初期状態にすべてのUIコントロールのプロパティをリセットするための一般的なオプションを好む場合は、そのデフォルト値、クリアプロットなど。に

は、ここに一つの可能​​な解決策の例です。 2つの編集可能なテキストボックスとリセットボタンを備えた図。テキストボックスに任意の値を入力することができます。リセットボタンを押すと、クリアされます(最初に含まれていたデフォルトの空の文字列に設定されます)。

local functionget_default_stateは、これらのプロパティのためのすべての初期値getそして、そのset -ableプロパティ(読み取り専用されていない、すなわちすべてのプロパティ)の全てを取得し、図中のすべてのuicontrolのオブジェクトを検索します。 3つの出力は、nested functionreset_fcnでアクセス可能な1行3列のセル配列defaultStateに格納されます。リセットボタンが押されると、set対応UIコントロールのプロパティはすべて、最初に作成された時の値に設定されます。

Position propertyに対して行われた変更(図のサイズ変更などによる)は、この方法で元に戻すことができます。 'normalized' unitsを使用するとこれを回避できます。

関連する問題