注意事项:关于 GUIDE 的未来支持

在 MATLAB R2019b 版本中,MathWorks 宣布 GUIDE(图形用户界面设计环境)将在未来版本中被移除。需要注意的是,现有的 GUIDE 应用在 GUIDE 被移除后仍然可以运行,但将无法通过 GUIDE 环境进行编辑。


什么是 GUIDE?

GUIDE(Graphical User Interface Development Environment)是 MATLAB 提供的用于图形用户界面开发的工具箱,适用于高级 MATLAB 程序员。通过 GUI,可以将命令行程序封装为可视化界面,使非编程用户也可以轻松使用程序。

使用 GUIDE 通常包含两个主要流程:

  1. 布局 GUI(Lay out the GUI)

  2. 编程 GUI(Program the GUI)


创建空白 GUI

要开始使用 GUIDE,只需在 MATLAB 命令窗口中输入:

guide

你将看到 GUIDE 的主界面:

MATLAB GUIDE GUI 主菜单

我们将创建一个简单的 GUI 示例:该界面接受两个数作为输入,相加后将结果显示在第三个文本框中。虽然很简单,但可以说明 GUI 是如何在几分钟内创建的。

点击 Blank GUI (Default) 创建一个空白界面。


放置组件与修改属性

你会看到一个网格状画布,同时 GUIDE 的常用控件列在左侧。以下是常用组件及其简要说明:

组件 说明
Push Button(按钮) 鼠标点击后激活
Slider(滑块) 拖动滑块以改变值
Radio Button(单选按钮) 单选状态切换
Tick Box(复选框) 勾选/取消勾选
Edit Text(可编辑文本框) 用户输入文本
Static Text(静态文本) 标签或结果显示
Popup Menu(下拉菜单) 显示可选项菜单
List Box(列表框) 可滚动并可多选的列表
Toggle Button(切换按钮) 按下后保持状态
Table(表格) 显示数据表格
Axes(坐标轴) 用于 2D/3D 绘图
Panel(面板) 对控件进行视觉分组
Button Group(按钮组) 将多个单选或切换按钮作为一组使用
ActiveX 控件 不适用(N/A)

你可以通过拖拽将控件放置在画布上,例如放置 Static Text、Edit Text 和 Push Button。

默认 Edit Text 显示 “Edit Text”,Push Button 显示 “Push Button”。你可以通过双击组件打开属性检查器(Property Inspector),找到 String 属性并修改其文本。对于按钮,可改为 “Add”;对于输入框,可将默认文本删除。










使用 handles 编程

GUI 布局完成后,我们开始编写其逻辑功能:

  1. Num_A 输入框中获取数值;

  2. Num_B 输入框中获取数值;

  3. 将两数相加;

  4. 将结果写入第三个输入框。

实现上述功能需要使用 getset 命令:

var = get(handles.组件Tag名, 'String');
set(handles.组件Tag名, 'String', 变量值);

编写回调函数(Callback)

回调函数是在用户进行某种操作(如点击按钮)时自动执行的函数。回调是 GUI 编程的核心部分。

比如我们为按钮 Add 编写如下回调:

% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
    n1 = get(handles.edit1,'string');        % 获取第一个文本框的内容
    n2 = get(handles.edit2,'string');        % 获取第二个文本框的内容
    S = str2double(n1) + str2double(n2);     % 执行加法
    set(handles.edit3,'string',num2str(S))   % 显示结果到第三个文本框

这段代码中使用 str2double字符串转换为数值,再用 num2str 转为字符串显示。


更复杂的 GUI 示例

我们可以在加法的基础上添加减法、乘法、除法:

  1. 再添加 3 个 Push Button;

  2. 双击每个按钮,修改 String 属性为 SUB、MUL、DIV;

  3. 修改 Tag 为 sub_button、mul_button、div_button,更易识别;

  4. 通过按钮对齐工具 Align Object 整齐排列按钮和输入框;



  1. 每个按钮编写回调函数如下:

% --- Subtraction
function sub_button_Callback(hObject, eventdata, handles)
    n1 = get(handles.edit1,'string');
    n2 = get(handles.edit2,'string');
    S = str2double(n1) - str2double(n2);
    set(handles.edit3,'String',num2str(S))

% --- Multiplication
function mul_button_Callback(hObject, eventdata, handles)
    n1 = get(handles.edit1,'string');
    n2 = get(handles.edit2,'string');
    S = str2double(n1) * str2double(n2);
    set(handles.edit3,'String',num2str(S))

% --- Division
function div_button_Callback(hObject, eventdata, handles)
    n1 = get(handles.edit1,'string');
    n2 = get(handles.edit2,'string');
    S = str2double(n1) / str2double(n2);
    set(handles.edit3,'String',num2str(S))

至此,你已经成功完成了一个 MATLAB 简易计算器。


更复杂的拓展:如投射运动图形界面

你还可以创建更复杂的 GUI,例如投射运动图像绘制界面,允许用户输入初速度、角度等参数,程序绘图。只需稍加扩展,甚至可以绘制任意自定义函数图像。


参考资料:


Last modified: Wednesday, 16 April 2025, 12:18 PM