两个或多个GUI之间的通信

时间:2014-07-29 22:51:32

标签: matlab user-interface

我有一个GUI(即我们称之为“第一个”),通过它我可以选择打开其他GUI(让我们称之为' Second'和'第三')。我想放一个'按钮'在“第一个”GUI上,我可以操作“第二个”的不同轴上的数字。和'第三'图形用户界面。所以,如果使用' Second'我选择使用#First;#GUI;或者'第三' GUI;一旦我选择了我开始只使用我选择的GUI(所以第三个或第二个)。现在我想要一个按钮不在每个GUI(第二个或第三个)上但只在第一个GUI上,以便操纵第二个或第三个轴1上的数字(取决于我之前选择的那个) 。此外,我想要的这个按钮是可选的,我需要在使用之后刷新我的轴。 我已尽最大努力解释情况,如果您知道任何解决方案可以帮助我,请致谢!谢谢

1 个答案:

答案 0 :(得分:2)

您的问题类似于其他示例,例如this

要了解如何解决问题,您需要记住MATLAB根据用户提供的轴句柄“决定”更新哪些轴。如果用户未提供句柄,则使用默认gca当前轴)。 gca指向的轴是图中child的第一个'axes',即findobj(hFigure,'Type','axes')中的第一个条目。您可以阅读有关设置当前轴here的信息。

确定之后,您正在寻找的解决方案将涉及在某处存储轴手柄,并在您要更新绘图时检索正确的解决方案。存储它的常见位置是“应用程序定义的数据”( appdata ),可由setappdatagetappdata访问,如上面第一个链接中所提到的那样{{} 3}}

您应该接受的程序是:

  1. 创建图形后,通过从GUI初始化函数调用setappdata(0,name,val)(例如setappdata(0,'axTag1',handles.axTag1))将轴句柄存储在appdata中。第一个参数的值0将它存储在MATLAB的 root 对象中(您可以将其视为主MATLAB窗口),这样即使任何数字都关闭,信息也是如此只要MATLAB仍处于打开状态,它就会被维护。
  2. 每当您想要修改轴时,只需使用value = getappdata(0,name)获取相应的手柄,并使用它来更新相应的轴。