如何使用Matlab完成窗口与子窗口

目录

一、前言

二、主窗口与主窗口按钮

三、子窗口

四、调用函数并显示在子窗口中的文本框中

五、关闭子窗口


一、前言

有时候需要借用Matlab完成一个图窗功能,但是我们的程序不仅拥有功能,还拥有一些子功能,那么我们该如何借助Matlab完成窗口与子窗口功能呢?

二、主窗口与主窗口按钮

创建主窗口\rightarrow添加主窗口按钮。具体代码如下:

% 主窗口
mainFigure = uifigure('Name', '主窗口', 'Position', [100, 100, 400, 300]);
% 主窗口按钮
mainButton = uibutton(mainFigure, 'Text', '打开子窗口', 'Position', [150, 130, 100, 30], 'ButtonPushedFcn', @(src, event) openSubWindow(src));

 单击主窗口按钮会打开一个子窗口,主窗口布局如下:

如何使用Matlab完成窗口与子窗口_第1张图片

三、子窗口

MATLAB 可以创建子窗口或模态对话框来实现类似子功能的弹窗。子窗口通常是通过 uifigureuipanel uitab 等 UI 组件创建的。我们可以在子窗口中添加按钮、文本框、图形等组件,以实现所需的功能。

创建一个子窗口函数\rightarrow创建子窗口\rightarrow在子窗口中添加按钮\rightarrow在子窗口中添加关闭按钮\rightarrow在子窗口中添加文本框。具体代码如下:

% 子窗口函数
function openSubWindow(~)
    % 创建子窗口
    subWindow = uifigure('Name', '子窗口', 'Position', [200, 200, 400, 250]);
    % 在子窗口中添加按钮
    subButton = uibutton(subWindow, 'Text', '启动程序', 'Position', [50, 150, 150, 30], 'ButtonPushedFcn', @(src, event) runFunction(src, subWindow));
    % 在子窗口中添加关闭按钮
    closeButton = uibutton(subWindow, 'Text', '关闭子窗口', 'Position', [250, 150, 100, 30], 'ButtonPushedFcn', @(src, event) closeSubWindow(src, subWindow));
    % 在子窗口中添加文本框
    resultTextArea = uitextarea(subWindow, 'Position', [50, 50, 300, 80]);
end

 子窗口中有两个按钮,第一个按钮可以启动相应的功能,第二个按钮可以用于关闭子窗口。子窗口布局如下:

如何使用Matlab完成窗口与子窗口_第2张图片

四、调用函数并显示在子窗口中的文本框中

除了子窗口按钮事件外,有时候当子窗口中的按钮被点击时,我们想要调用一个函数,并将该函数的结果显示在子窗口中的文本框中,这样又该如何操作呢?

function runFunction(~, subWindow)
    % 调用需要执行的函数
    result = exampleFunction(subWindow);
    % 在子窗口中获取文本框对象
    resultTextArea = subWindow.Children(end-2); % 获取子窗口的倒数第三个子组件
    % 显示函数结果在文本框中
    resultTextArea.Value = ['Function Result: ' num2str(result)];
end

如何使用Matlab完成窗口与子窗口_第3张图片

MATLAB R2021b及更早版本的uitextarea并不支持Value属性。我们可以使用Value的替代属性Text。当‘启动程序’被点击时,调用 runFunction 函数,该函数会执行 exampleFunction 并将结果显示在文本框中。当然我的博客只是做一个简单的示例,所以我的exampleFunction 在这里仅返回一个随机数,你可以替换为自己想要执行的功能。

如何使用Matlab完成窗口与子窗口_第4张图片

五、关闭子窗口

我们可以根据实际需要在子窗口中添加更多的组件和功能。并且关闭子窗口时,只需调用 close(subWindow) 即可。 

% 关闭子窗口
close(subWindow);

博主的每篇博文都是用心去写的,喜欢的可以多多支持和收藏,创作不易,未经作者允许,请勿转载或者抄袭。因为抄袭风气盛行,故一些细节或者代码没有展示,敬请谅解。 

你可能感兴趣的:(MATLAB,Matlab,弹窗,层级弹窗,主窗口与子窗口)