【问题标题】:How to make a GUI pushbutton open/close another GUI如何使 GUI 按钮打开/关闭另一个 GUI
【发布时间】:2016-08-31 17:01:03
【问题描述】:

我有一个名为 GUI_main 的 GUI,其中有一个名为 pushbutton_GUI_main 的按钮。我目前实现了以下回调函数:

function pushbutton_GUI_main_Callback(hObject, eventdata, handles)

GUI_sub

其中GUI_sub 是单击pushbutton_GUI_main 时打开的另一个GUI。但是,我想要以下内容:

function pushbutton_GUI_main_Callback(hObject, eventdata, handles)

if (GUI_sub == open)
   close(GUI_sub)
else
   GUI_sub

也就是说,使用pushbutton_GUI_main,我希望能够打开关闭GUI_sub

【问题讨论】:

  • GUI_sub 是否向自身返回句柄?如果是这样,您可能可以将该句柄存储在您的 GUI_main 句柄中,然后检查其状态。我还没有做那个确切的事情,所以我无法帮助确切的实施

标签: matlab user-interface matlab-guide


【解决方案1】:

您需要一个对象句柄来引用子 GUI。假设GUI_sub 是一个使用 GUIDE 构建的 GUI,默认情况下它被编程为带有可选的句柄输出。

一个简单的 GUIDE GUI 实现看起来像这样:

function pushbutton1_Callback(hObject, eventdata, handles)
if ~isempty(handles.figure1.UserData)
    close(handles.figure1.UserData);
    handles.figure1.UserData = [];
else
    handles.figure1.UserData = sub_GUI;
end

默认情况下,大多数(也许是全部?)MATLAB 的图形对象都有一个UserData 字段。在这个简单的示例中,我使用了基本图形对象的UserData。另请参阅:Share Data Among Callbacks 了解存储/传输此数据的其他方法。

【讨论】:

    【解决方案2】:

    正如 excaza 所说,handles 是在 GUI 中传递数据或信息的好方法。 另一种方式,如果您出于某种原因不想存储 GUI 句柄,也许如果可以独立创建 GUI_sub 是搜索图形句柄。

    subGuiH = findall(0,'Name','GUI_sub');
    if ~isempty(subGuiH)
        close(subGuiH);
    end
    GUI_sub;
    

    可以通过添加来缩小搜索范围

    findall(0,'Type','figure','Name','GUI_sub')
    

    根据您的 Matlab 版本,您还可以检查 groot

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-26
      • 2021-07-04
      • 1970-01-01
      • 2013-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多