【问题标题】:Communication between two or more GUIs两个或多个 GUI 之间的通信
【发布时间】:2014-07-29 22:51:32
【问题描述】:
我有一个 GUI(即我们称之为“第一个”),通过它我可以选择打开其他 GUI(我们称之为“第二个”和“第三个”)。我想在“上”放置一个“按钮” First'GUI,它允许我在“第二”和“第三”GUI 的不同轴上操作图形。所以,如果使用“第二”或“第三”GUI,我选择“第一”GUI;一旦我选择了我开始使用我选择的 GUI(所以第三个或第二个)。现在我想在每个 GUI(第二个或第三个)上而不是在第一个上都有一个按钮,以便在第二个或第三个的轴 1 上操作图形(取决于我之前选择的那个)。此外,我想要的这个按钮是可选的,我需要在使用后刷新我的轴。
我已尽力解释情况,如果您知道任何解决方案,请帮助我!谢谢
【问题讨论】:
标签:
matlab
user-interface
【解决方案1】:
您的问题与其他示例类似,例如this。
要了解如何解决您的问题,您需要记住 MATLAB 根据用户提供的坐标区句柄“决定”更新哪些坐标区。如果用户不提供句柄,则使用默认的 gca(当前坐标区)。 gca指向的轴,是图中'axes'类型的第一个child,即findobj(hFigure,'Type','axes')中的第一个条目。您可以阅读有关设置当前轴的信息here。
确定后,您正在寻找的解决方案将涉及将 轴句柄 存储在某处,并在您即将更新绘图时检索正确的句柄。一个常见的存储位置是“应用程序定义的数据”(appdata),可通过setappdata 和getappdata 访问,如上面第一个链接和here 中所述。
你应该接受的程序是:
- 创建图形后,通过从 GUI 初始化函数调用
setappdata(0,name,val)(例如 setappdata(0,'axTag1',handles.axTag1))将坐标区句柄存储在 appdata 中。第一个参数的值 0 将其存储在 MATLAB 的 root 对象中(您可以将其视为 MATLAB 主窗口),因此即使关闭任何图形,信息也会保留只要 MATLAB 仍处于打开状态。
- 每当您想修改轴时,只需使用
value = getappdata(0,name) 获取相应的句柄并使用它来更新相应的轴。