• 为了保证你在浏览本网站时有着更好的体验,建议使用类似Chrome、Firefox之类的浏览器~~
    • 如果你喜欢本站的内容何不Ctrl+D收藏一下呢,与大家一起分享各种编程知识~
    • 本网站研究机器学习、计算机视觉、模式识别~当然不局限于此,生命在于折腾,何不年轻时多折腾一下

Matlab gui教程0x3-GUI回调函数(callback)代码

Matlab admin 3年前 (2016-11-08) 1548次浏览 0个评论 扫描二维码

在保存 GUI 程序时,Matlab 会自动生成.fig 和.m 文件,其中的.m 就是我们现在要操作的对象。

我们就是 M 文件中添加控件的回调函数相应用户的操作!这也是 GUI 编程的核心内容,它要求你必须掌握 Matlab 基本编程以及图形句柄语句!

打开.m 文件,发现里面有很多 function 的代码,看得我们眼花缭乱,呵呵,不要胆怯!本教程是初级教程, 我们只涉及里面的 callback,其他的我们可以暂时置之不理!至于其它的我们以后的教程中对做相关介绍!

在正式讲解之前,一个小使用技巧,Matlab Editor(代码编辑器)工具栏显示函数按钮 ,可以让我们快速跳转我们需要的函数位置!这个在.m 内容很多的时候很有用哦!

1、在 Editor 中工具栏的函数 Show Function 中选择 input1_editText_Callback

或者右击 tag 为 input1_editText 的编辑文本框,View Callback→Callback

2、此时光标会跳转到.m 文件的 function input1_editText_Callback 处,方便我们直接编辑

  1. function input1_editText_Callback(hObject, eventdata, handles)
  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 GUIDATA)
  5. % Hint: get(hObject,’String’) returns contents of input1_editText as text
  6. %        str2double(get(hObject,’String’)) returns contents of
  7. %        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. % 检验输入是否为空,是则将它置为 0
  6. if (isempty(input))
  7.      set(hObject,’String’,’0′)
  8. end
  9. % 保存 handles 结构体,只要在 handles 结构体有改变时,才需要保存
  10. guidata(hObject, handles); % 这里由于 handles 没有改变,故这里其实没有必要,但是为了避免潜在的不必要麻烦,建议在所有 Callback 最后都添加该命令

复制代码

3、为 input2_editText_Callback 添加完全相同的代码

4、编辑 add_pushbutton_Callback 回调函数,使用上面提到的方法,将光标定位到

  1. % — Executes on button press in add_pushbutton.
  2. function add_pushbutton_Callback(hObject, eventdata, handles)
  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 GUIDATA)

复制代码

在后面我们添加上如下代码

  1. a = get(handles.input1_editText,’String’);
  2. 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); % 更新结构体

复制代码

恭喜您,到此为此这个 GUI 程序就完成了!接下来就可以运行和演示它了!

有一个小技巧要告诉大家的,如果您在第一次保存 GUI 程序时,不想让 Matlab 为每一个 callback 回调函数自动生成注释文本,可以如下操作:File→Preferences…

如果不想让 Matlab 自动生成 fig 文件,而只是生成 M 文件,可以如下操作:Tools→GUI Option


Deeplearn, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Matlab gui 教程 0x3-GUI 回调函数(callback)代码
喜欢 (0)
admin
关于作者:
互联网行业码农一枚/业余铲屎官/数码影音爱好者/二次元

您必须 登录 才能发表评论!