0

我在两个不同的文件中有两个无花果。通过单击第一个无花果上的按钮,我想显示第二个...如何做到这一点?是否可以?

如果是,那么如何在两个数字之间交换数据?

4

1 回答 1

5

有多种方法可以在 GUI 之间共享数据。通常,您需要以某种方式使来自一个 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。您将看到一个带有可编辑文本框和按钮的小图形窗口。如果你在文本框中输入一些东西,然后点击按钮,第二个 GUI 将出现在它旁边。第二个 GUI 使用从第一个 GUI 传递给它的可编辑文本框的句柄来获取文本字符串、显示它并从第一个 GUI 清除该字符串。

这只是一个简单的例子。有关在 MATLAB 中编程 GUI 的更多信息,请查看MathWorks 在线文档以及此 SO 问题答案中的链接。

于 2010-12-06T16:11:08.057 回答