uicontrol(User Interface Control)是 MATLAB 用于创建交互式图形界面的函数。通过它,你可以在图形窗口(Figure)中放置各种控制框,如按钮、滑条、文本框等,并通过鼠标激活它们执行特定的操作。
1. 基本语法
Matlab
hc = uicontrol(hf_fig, 'PropertyName', PropertyValue, ...)
-
hc: 生成的控件对象句柄。
-
hf_fig: 父对象(图形窗口)的句柄。如果省略,则默认在当前图形窗口(
gcf)中建立。 -
PropertyName/PropertyValue: 控件的属性名与属性值。
2. 核心属性详解
| 属性名 | 说明 | 常见取值 |
| Style | 控件类型(最核心) |
pushbutton (按钮), slider (滑条), radiobutton (单选), checkbox (复选), edit (可编辑文本), text (静态文本), listbox (列表框), popupmenu (弹出菜单), frame (框架), togglebutton (状态按钮) |
| String | 显示的标签文本 |
字符串、字符串数组(列表/菜单项)、或由 | 分隔的字符串 |
| Position | 位置与大小 |
[左 底部 宽度 高度],单位由 Units 决定 |
| Callback | 回调函数 | 当用户点击或触发控件时执行的 MATLAB 字符串命令 |
| Value | 当前状态值 |
单/复选框选中时为 Max,未选中为 Min;滑条表示当前数值;菜单/列表表示选中项索引 |
| BackgroundColor | 背景颜色 |
RGB 向量(如 [1 1 1] 为白色)或颜色字符 |
| ForegroundColor | 前景(文字)颜色 | 同上,默认为黑色 |
| Enable | 启用状态 |
on (正常), off (变灰不可用), inactive (不可用但不显灰色) |
| FontSize | 字体大小 |
数字,单位由 FontUnits 决定 |
| TooltipString | 悬停提示 | 鼠标停留在控件上时显示的提示文字 |
3. 常见控件示例
例 1:关闭按钮 (Push Button)
典型的触发式动作。
Matlab
% 创建一个标有 "Close" 的按钮,点击后关闭当前窗口
Hc_close = uicontrol(gcf, 'Style', 'pushbutton', ...
'Position', [10 10 100 25], ...
'String', 'Close', ...
'Callback', 'close');
例 2:复选框 (Check Box)
用于切换某种状态(如坐标轴框线的显示)。
Matlab
hbox = uicontrol(gcf, 'Style', 'checkbox', ...
'Position', [100 50 100 20], ...
'String', 'Axis Box', ...
'Callback', 'if get(gcbo,''Value'')==1, set(gca,''Box'',''on''), else, set(gca,''Box'',''off''), end');
例 3:滑块 (Slider)
用于在一定范围内选择数值。
Matlab
% 创建滑块调整视角方位角,范围 -90 到 90
Hc_az = uicontrol(gcf, 'Style', 'slider', ...
'Position', [10 5 140 20], ...
'Min', -90, 'Max', 90, 'Value', 0, ...
'Callback', 'set(gca, ''View'', [get(gcbo,''Value''), 30])');
例 4:组合框架 (Frame)
用于视觉上对控件进行分组。
Matlab
% 先画框架,再在框架位置内放置按钮
Hc_frame = uicontrol(gcf, 'Style', 'frame', 'Position', [250 200 95 65]);
Hc_pb1 = uicontrol(gcf, 'Style', 'pushbutton', 'Position', [255 205 40 40], 'String', 'OK');
Hc_pb2 = uicontrol(gcf, 'Style', 'pushbutton', 'Position', [300 205 40 40], 'String', 'NO');
Hc_lbl = uicontrol(gcf, 'Style', 'text', 'Position', [255 250 85 15], 'String', 'Push Me');
4. 关键技巧与注意事项
-
单位设置 (
Units): 默认通常是pixels(像素)。如果你希望窗口缩放时控件也随之缩放,建议将Units设置为normalized(归一化,范围 0 到 1)。 -
回调中的
gcbo: 在Callback字符串中,使用gcbo可以直接获取当前触发回调的控件句柄,避免使用全局变量或硬编码句柄名。 -
单选按钮的互斥性: MATLAB 的
radiobutton默认不是互斥的。若要实现“选 A 必不选 B”,需要在每个按钮的回调函数中手动设置其他按钮的Value为 0。 -
滑块步长 (
SliderStep): 该属性是一个两元素向量[小步长 大步长]。默认为[0.01 0.1],即点击箭头移动范围的 1%,点击滑槽移动 10%。
附:常用颜色参考 (RGB)
-
白色:
[1 1 1] -
灰色:
[.8 .8 .8] -
蓝色:
[0 0 1] -
黄色:
[1 1 0]