我有一个具有不同功能方面的MATLAB GUI,每个GUI都有自己的uicontrol面板。选择一个面板时,另一个面板设置为不可见,反之亦然。但是,它们以弹出菜单的形式共享一些相同的输入。我可以加入克隆'不知何故,第二个面板上的菜单实例?我想避免尽可能多的冗余回调和uicontrol。
答案 0 :(得分:2)
我想如果uicontrol是这个人物的直接孩子,你可以把它放在一切的前面。
更简单的解决方案是对多个uicontrol使用相同的回调。在属性编辑器中,您可以修改回调名称并将其设置为公共回调函数。此外,您可以在GUI的myPopupH
中创建一个字段(例如OpeningFcn
),在该字段中存储应该以相同方式运行的弹出窗口的句柄。然后,在回调中,您将使用hObject
,即第一个输入参数,用于所有get
调用(以访问弹出菜单的修改状态),但您将使用{在所有handles.myPopupH
调用中{1}},以便您可以确保两个弹出窗口始终具有相同的状态。因此,ui-object可能是多余的,但所有代码(更为关键)只存在于一个副本中。
我通常对多个ui元素使用单个回调的一个地方是关闭请求函数,它可以从“取消”按钮以及关闭图形的“X”访问,也可以从其中一个“文件” - 菜单项。