《经典GUI基础入门:MATLAB中GUI用户图形界面学习》由会员分享,可在线阅读,更多相关《经典GUI基础入门:MATLAB中GUI用户图形界面学习(15页珍藏版)》请在金锄头文库上搜索。
1、GUI 指导教程系列 1 GUI 入门基本操作 为什么在 MATLAB 中要使用 GUI 呢 其实 GUI 就是 Matlab 中的 Visual Basic 是面向对象的编程 可以使 Matlab 程序的终端用户 即使不懂的 Matlab 也可以 轻易操作该程序 如果没有图形用户界面 GUI 我们只能从命令行 Command Window 中调用相关程 序 这相对比较繁琐 并且不是所有用户都是这个能力 就好比计算机的 DOS 系统 在有 windows 的情况下 您会选择 DOS 吗 当然我们也不排除骨灰级的人 物 在本节教程我们主要针对没有 GUI 创建和使用经历的网友 但是必要的 MAT
2、LAB 基础知识是需要的 在教程中我们将创建一个简单的 GUI 程序 它执行两个数的 加法运行 然后显示其运算结果 好下面开始我们的教程 一 打开和创建一 打开和创建 GUIGUI 界面界面 1 首先打开 Matlab 在 Command Window 中输入 guide 回车 2 此时打开 GUI 编辑器 GUIDE GUI Developer 的缩写 2 1 界面上有两个标签也 Creat New GUI 和 Open Existing GUI 如果创建新的 GUI 此时我们选择第一个标签页 但如果打开其它已经存在的 GUI 就点击第二个标签吧 2 2 这里我们选择第一个标签下的 Blan
3、k GUI 空白 GUI 下面还有几个系 统 GUI 模版 你可以根据需要选择其它的 2 3 点击 OK 我们正式进入 GUIDE 界面 呵呵 是不是感觉似曾相识 3 添加你需要的控件到 figure 中 在添加控件之前 您最好对您的 GUI 界面布局已经有一定的构思了 否则盲目性 太大了不利于您的编程 下面是我们构思的布局 二 添加控件和设置属性二 添加控件和设置属性 在正式讲解之前 我们先讲解下 GUI 中的鼠标基本操作 a 在左边的控件面板中鼠标左击选择您需要的控件 然后放开鼠标 b 在右边的 figure 中按住左键 画出您的控件 于是空间就在 figure 上 c 你可以用鼠标拖拽
4、figure 上所有控件 来改变他们的位置 d 在控件上双击鼠标左键 右击是快捷菜单 可打开控件属性面板 1 从上面的布局构思 我们知道本 GUI 需要以下控件 三个 编辑文本框 Edit Text 三个 静态文本框 Static Text 一个 确定按钮 Pushbutton 按照上面介绍的鼠标操作方法 将这 6 个控件拖到右边的 figure 中 如下图所 示 2 接下来就是编辑这些控件的属性 好 下面从 Static Text 开始吧 双击其中一个 静态文本块 将跳出该控件 的 属性查看器 Property Inspector GUI 控件的几个常用属性说明如下 position 指示空
5、间在 figure 中的位置 font 字体相关属性 string 相当如 VB 中的 caption 就是显示在控件上的文字 tag 控件的唯一标识符 相当于 ID 我们需要 tag 来指定某一个空间 2 1 在这里我们修改它的 string 属性为 2 2 同理修改它的 fontsize 属性为 20 在编辑完这些属性后 直接点击右上角的 关闭 按钮 关闭属性查看器 此时 属性会自动保存 回到 GUIDE 如果控件上的文字被部分隐盖 此时可以通过鼠 标拖拽改变控件的大小 二 添加控件和设置属性二 添加控件和设置属性 在正式讲解之前 我们先讲解下 GUI 中的鼠标基本操作 a 在左边的控件面
6、板中鼠标左击选择您需要的控件 然后放开鼠标 b 在右边的 figure 中按住左键 画出您的控件 于是空间就在 figure 上 c 你可以用鼠标拖拽 figure 上所有控件 来改变他们的位置 d 在控件上双击鼠标左键 右击是快捷菜单 可打开控件属性面板 1 从上面的布局构思 我们知道本 GUI 需要以下控件 三个 编辑文本框 Edit Text 三个 静态文本框 Static Text 一个 确定按钮 Pushbutton 按照上面介绍的鼠标操作方法 将这 6 个控件拖到右边的 figure 中 如下图所 示 2 接下来就是编辑这些控件的属性 好 下面从 Static Text 开始吧 双
7、击其中一个 静态文本块 将跳出该控件 的 属性查看器 Property Inspector GUI 控件的几个常用属性说明如下 position 指示空间在 figure 中的位置 font 字体相关属性 string 相当如 VB 中的 caption 就是显示在控件上的文字 tag 控件的唯一标识符 相当于 ID 我们需要 tag 来指定某一个空间 2 1 在这里我们修改它的 string 属性为 2 2 同理修改它的 fontsize 属性为 20 在编辑完这些属性后 直接点击右上角的 关闭 按钮 关闭属性查看器 此时 属性会自动保存 回到 GUIDE 如果控件上的文字被部分隐盖 此时可
8、以通过鼠 标拖拽改变控件的大小 2 3 重复上面的操作 1 将第二个 Static Text 的 string 改为 fontsize 为 20 2 第三个 Static Text 的 string 改为 My Adder GUI fontsize 为 20 于是 我们将得到如下所示的 GUI 界面 2 4 下面双击 Edit Text 修改编辑文本框的属性 1 第一个 Edit Text 的用来存储第一个加数 我们将 string 改为 0 tag 改为 input1 editText 2 第二个 Edit Text 的用来存储第二个加数 我们将 string 改为 0 tag 改为 inp
9、ut2 editText 3 第三个 Edit Text 的 string 改为 0 tag 为 answer static Text 2 5 修改 Pushbutton 按钮的属性 string 改为 Add tag 改为 a dd pushbutton 再次预览下我们现在得到的 GUI 界面 3 重新布局和移动控件位置 使其美观 将上面编辑完的 GUI 程序保存为 myAdder 此时在当前目录下 Matlab 将自动生 成如下来个两个文件 myAdder m 和 myAdder fig fig 文件包含了程序的图形用 户界面 m 文中包含了 GUI 所需的回调函数和其他必须代码 三 书写
10、三 书写 GUIGUI 回调函数回调函数 callback callback 代码代码 在保存 GUI 程序时 Matlab 会自动生成 fig 和 m 文件 其中的 m 就是我们现在 要操作的对象 我们就是 M 文件中添加控件的回调函数相应用户的操作 这也是 GUI 编程的核心 内容 它要求你必须掌握 Matlab 基本编程以及图形句柄语句 打开 m 文件 发现里面有很多 function 的代码 看得我们眼花缭乱 呵呵 不 要胆怯 本教程是初级教程 我们只涉及里面的 callback 其他的我们可以暂 时置之不理 至于其它的我们以后的教程中对做相关介绍 在正式讲解之前 一个小使用技巧 Ma
11、tlab Editor 代码编辑器 工具栏显示函 数按钮 可以让我们快速跳转我们需要的函数位置 这个在 m 内容很多的时候很有用 哦 1 在 Editor 中工具栏的函数 Show Function 中选择 input1 editText Callbac k 或者右击 tag 为 input1 editText 的编辑文本框 View Callback Callback 2 此时光标会跳转到 m 文件的 function input1 editText Callback 处 方便 我们直接编辑 1 function input1 editText Callback hObject eventd
12、ata handl es 2 hObject handle to input1 editText see GCBO 3 eventdata reserved to be defined in a future version of MATLAB 4 handles structure with handles and user data see GUIDAT A 5 6 Hint get hObject String returns contents of input1 ed itText as text 7 str2double get hObject String returns cont
13、ents of 8 input1 editText as a double 复制代码 在上面代码下添加如下 MATLAB 代码 1 handles 包含 figure 中所有图形对象句柄的结构体 如果我们想 引用 tag 为 mytag 的控件 使用 handles mytag 2 set get 函数是用来设置 获取某个控件属性 3 使用 get 命令获取第一个加数 并将它转换成数值 4 input str2num get hObject String string 属性是字符 串 所以必须转换成数值 5 6 检验输入是否为空 是则将它置为 0 7 if isempty input 8 se
14、t hObject String 0 9 end 10 11 保存 handles 结构体 只要在 handles 结构体有改变时 才需要保 存 12 guidata hObject handles 这里由于 handles 没有改变 故这 里其实没有必要 但是为了避免潜在的不必要麻烦 建议在所有 Cal lback 最后都添加该命令 复制代码 3 为 input2 editText Callback 添加完全相同的代码 4 编辑 add pushbutton Callback 回调函数 使用上面提到的方法 将光标定 位到 1 Executes on button press in add p
15、ushbutton 2 function add pushbutton Callback hObject eventdata handle s 3 hObject handle to add pushbutton see GCBO 4 eventdata reserved to be defined in a future version of MATLAB 5 handles structure with handles and user data see GUIDAT A 复制代码 在后面我们添加上如下代码 1 a get handles input1 editText String 2
16、b get handles input2 editText String 3 a 和 b 是字符串变量 我们需要使用 str2double 函数将其转换为 数值 4 然后才能相加 否则字符串是没法相加的 5 total str2num a str2num b 格式转换 转换为数值 6 由于 string 属性是字符串 所以必须将两个数的和转换为字符串 7 c num2str total 转换为字符串 8 将结果赋值给 answer staticText 空间的 string 属性 于是就可 以显示结果了 9 set handles answer staticText String c 10 guidata hObject handles 更新结构体 复制代码 恭喜您 到此为此这个恭喜您 到此为此这个 GUIGUI 程序就完成了 程序就完成了 接下来就可以运行和演示它了 有一个小技巧要告诉大家的 如果您在第一次保存 GUI 程序时 不想让 Matlab 为每一个 callback 回调函数自动生成注释文本 可以如下操作 File Prefer ences 如果不想让 Matlab 自动生