0

2 つの異なるファイルに 2 つのイチジクがあります。最初の図のボタンをクリックすると、2 番目の図を表示したいのですが、どうすればよいですか? 出来ますか?

はいの場合、2 つの図の間でデータを交換する方法は?

4

1 に答える 1

5

GUI 間でデータを共有するには、いくつかの方法があります。一般に、特定のオブジェクト プロパティを取得/設定できるように、1 つの GUI のグラフィックス ハンドルを他の GUI で使用できるようにする必要があります。以下は、ある GUI が別の GUI を作成し、それにオブジェクト ハンドルを渡すという非常に単純な例です。

function gui_one

  hFigure = figure('Pos',[200 200 120 70],...  %# Make a new figure
                   'MenuBar','none');
  hEdit = uicontrol('Style','edit',...         %# Make an editable text box
                    'Parent',hFigure,...
                    'Pos',[10 45 100 15]);
  hButton = uicontrol('Style','push',...       %# Make a push button
                      'Parent',hFigure,...
                      'Pos',[10 10 100 25],...
                      'String','Open new figure',...
                      'Callback',@open_gui_two);

%#---Nested functions below---
  function open_gui_two(hObject,eventData)
    gui_two(hEdit);  %# Pass handle of editable text box to gui_two
  end

end

%#---Subfunctions below---
function gui_two(hEdit)

  displayStr = get(hEdit,'String');  %# Get the editable text from gui_one
  set(hEdit,'String','');            %# Clear the editable text from gui_one
  hFigure = figure('Pos',[400 200 120 70],...  %# Make a new figure
                   'MenuBar','none');
  hText = uicontrol('Style','text',...         %# Make a static text box
                    'Parent',hFigure,...
                    'Pos',[10 27 100 15],...
                    'String',displayStr);

end

上記のコードを m ファイルに保存した後、次のように入力して最初の GUI を作成できますgui_one。編集可能なテキスト ボックスとボタンを備えた小さな Figure ウィンドウが表示されます。テキスト ボックスに何かを入力してボタンを押すと、その横に 2 つ目の GUI が表示されます。この 2 番目の GUI は、最初の GUI から渡された編集可能なテキスト ボックスのハンドルを使用して、テキスト文字列を取得して表示し、最初の GUI から文字列をクリアします。

これは簡単な例です。MATLAB での GUI のプログラミングの詳細については、MathWorks のオンライン ドキュメントと、この SO の質問への回答のリンクを参照してください。

于 2010-12-06T16:11:08.057 に答える