目录
一、前言
二、主窗口与主窗口按钮
三、子窗口
四、调用函数并显示在子窗口中的文本框中
五、关闭子窗口
有时候需要借用Matlab完成一个图窗功能,但是我们的程序不仅拥有功能,还拥有一些子功能,那么我们该如何借助Matlab完成窗口与子窗口功能呢?
创建主窗口添加主窗口按钮。具体代码如下:
% 主窗口
mainFigure = uifigure('Name', '主窗口', 'Position', [100, 100, 400, 300]);
% 主窗口按钮
mainButton = uibutton(mainFigure, 'Text', '打开子窗口', 'Position', [150, 130, 100, 30], 'ButtonPushedFcn', @(src, event) openSubWindow(src));
单击主窗口按钮会打开一个子窗口,主窗口布局如下:
MATLAB 可以创建子窗口或模态对话框来实现类似子功能的弹窗。子窗口通常是通过 uifigure
、uipanel
或 uitab
等 UI 组件创建的。我们可以在子窗口中添加按钮、文本框、图形等组件,以实现所需的功能。
创建一个子窗口函数创建子窗口在子窗口中添加按钮在子窗口中添加关闭按钮在子窗口中添加文本框。具体代码如下:
% 子窗口函数
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
子窗口中有两个按钮,第一个按钮可以启动相应的功能,第二个按钮可以用于关闭子窗口。子窗口布局如下:
除了子窗口按钮事件外,有时候当子窗口中的按钮被点击时,我们想要调用一个函数,并将该函数的结果显示在子窗口中的文本框中,这样又该如何操作呢?
function runFunction(~, subWindow)
% 调用需要执行的函数
result = exampleFunction(subWindow);
% 在子窗口中获取文本框对象
resultTextArea = subWindow.Children(end-2); % 获取子窗口的倒数第三个子组件
% 显示函数结果在文本框中
resultTextArea.Value = ['Function Result: ' num2str(result)];
end
MATLAB R2021b及更早版本的uitextarea
并不支持Value
属性。我们可以使用Value
的替代属性Text
。当‘启动程序’被点击时,调用 runFunction
函数,该函数会执行 exampleFunction
并将结果显示在文本框中。当然我的博客只是做一个简单的示例,所以我的exampleFunction
在这里仅返回一个随机数,你可以替换为自己想要执行的功能。
我们可以根据实际需要在子窗口中添加更多的组件和功能。并且关闭子窗口时,只需调用 close(subWindow)
即可。
% 关闭子窗口
close(subWindow);
博主的每篇博文都是用心去写的,喜欢的可以多多支持和收藏,创作不易,未经作者允许,请勿转载或者抄袭。因为抄袭风气盛行,故一些细节或者代码没有展示,敬请谅解。