MATLAB GUI编程开发小点
2015-01-09 23:45
337 查看
a=get(handles.edit3,'String');
set(handles.edit3,'String','1');
a=get(hOject,'String');
set(hOject,'String','1');
产生的效果是一样的,应该是MATLAB显示问题,hOject中O是大写字母,而不是零。
-----------------------------------------------------------------------------------------------------------------
一般不能单独运行.fig文件,有时会出现不能运行的问题,
可以运行.m文件,或者用guide 打开可编辑的.fig文件来运行GUI程序这样就不会出问题,
用guide来打开fig文件
------------------------------------------------------------------------------------------------------------------------------------
调整GUI大小;
回调函数;
控件;
panel 可以在panel上放置其他控件;
GUI控件的“Tag”属性提供了一个唯一的标示符;
guide使用“Tag”属性来命名由控件生成的MATLAB函数;
GUI生成两个文件,.FIG文件包含布局信息,.M实现代码,包含GUI生成的代码(回调函数);
handles.output=hObject;自动生成的代码,指定这个GUI被调用后所返回的内容;
guidata(hObject,handles);是更新句柄数据结构所必需的;
控件--右键--view Callback--Callback,查看回调函数;
which laughter.mat 文件的位置;
close(相应句柄);可以关闭相应的图像。。;
消息对话框:
msgbox('message','title','style');
msgbox('message');只显示内容;
style可以为question、warn、help、error、custom、none等
选择对话框默认3个选项Yes No Cancel
answer=questdlg('Do you want to quit the program ?')
switch answer
case 'Yes'
close(gcbf);
case 'No'
msgbox('you choose no !');
case 'Cancel'
msgbox('you choose cancel !');
end
logo;
hold;保留当前图像
close;关闭图像
用过matlab做GUI的人可能者有或者曾经有过这样的疑惑,handles到底是一个什么鬼东西,我又该怎么去操控它。其实handles很简单,只是matlab里的帮助好像把它说的很麻烦罢了。
为了说明问题,我们不访拿户籍管理做一个类比吧,我们知道,我们每个人都有一个名字和一个身份证号,我们可以同名,但我们的身份证号是唯一的。小米做的matlab可能就是借用的这种思想(毕竟都是管理嘛,只不过一个管的是人,一个管的是控件而已)。
matlab里的每个控件都一个编号,就好像我们的身分证号一样,而且它们在整个程序执行期间都是唯一的。它们是在程序打开时由matlab自动分派,并且这个号在程序执行期间是不可改的。程序关闭后这些编号会被自动撤销(其实就是变量嘛,程序一关变量自然就over了),在下次程序启动时会被重新分派,所以你不要指望这次把这个号记住,下次通过这个号再找出对应的控件。但是记住每个控件的号肯定是一个让人头大的事,所以maltab就又给每个控件一个名字Tag,通过Tag我们很容易记住控件的标识。但是名字名字有一个缺点,就是重名的问题,你叫张三,人家也能叫张三,不过好在都是我们给控件命名的,可以避免这一个问题。除了容易记住这一优点外,Tag还有一个优点就是关闭程序后在下次执行时它还是一样的(Tag可以被人为更改,只要你没有改的话它就是不变的),所以下次启动时我们可以通过Tag来找到我们想要的控件。
我们可以看到handles的结构是“Tag:标号”,比如一个控件按钮的Tag是test,标号是100,那么在程序中就有这样一种对应关系test就对应着100,也就是名为test的变量中存着100,而100对应着这个按钮。我们可以更改handles.test的值:
handles.test=99;
guidata(gcf,handles)
但是改过之后你再也不能通过test来找到那个按钮控件了,如果你不幸没有记住那个标号的话,那么你就与那个按钮控件失去联系了。
另外,matlab中获取handles的方法有两种,第一个是通过handles=guidata(gcf)来获得,第二种是通过handles=guihandles来获得,那么这两个有什么区别呢?经过测试发现通过uimenu创建一个新的控件,
h=uimenu(hparent,'Tag','mymenu');
此时用handles=guidata(gcf)所得到的handles中不会有handles.mymenu的(matlab帮助上说了),但是用handles=guihandles得到的却会有handles.mymenu.只有加上下面两句话:
handles.mymenu=h;
guidata(gcf,handles);
才会通过handles=guidata(gcf)得到handles.mymenu;
还应该注意到guidata得到的handles与guihandles得到的handls是不一样的,不能用guihandles得到的handles来覆盖handles.
set(handles.edit3,'String','1');
a=get(hOject,'String');
set(hOject,'String','1');
产生的效果是一样的,应该是MATLAB显示问题,hOject中O是大写字母,而不是零。
-----------------------------------------------------------------------------------------------------------------
一般不能单独运行.fig文件,有时会出现不能运行的问题,
可以运行.m文件,或者用guide 打开可编辑的.fig文件来运行GUI程序这样就不会出问题,
用guide来打开fig文件
------------------------------------------------------------------------------------------------------------------------------------
调整GUI大小;
回调函数;
控件;
panel 可以在panel上放置其他控件;
GUI控件的“Tag”属性提供了一个唯一的标示符;
guide使用“Tag”属性来命名由控件生成的MATLAB函数;
GUI生成两个文件,.FIG文件包含布局信息,.M实现代码,包含GUI生成的代码(回调函数);
handles.output=hObject;自动生成的代码,指定这个GUI被调用后所返回的内容;
guidata(hObject,handles);是更新句柄数据结构所必需的;
控件--右键--view Callback--Callback,查看回调函数;
which laughter.mat 文件的位置;
close(相应句柄);可以关闭相应的图像。。;
消息对话框:
msgbox('message','title','style');
msgbox('message');只显示内容;
style可以为question、warn、help、error、custom、none等
选择对话框默认3个选项Yes No Cancel
answer=questdlg('Do you want to quit the program ?')
switch answer
case 'Yes'
close(gcbf);
case 'No'
msgbox('you choose no !');
case 'Cancel'
msgbox('you choose cancel !');
end
logo;
hold;保留当前图像
close;关闭图像
用过matlab做GUI的人可能者有或者曾经有过这样的疑惑,handles到底是一个什么鬼东西,我又该怎么去操控它。其实handles很简单,只是matlab里的帮助好像把它说的很麻烦罢了。
为了说明问题,我们不访拿户籍管理做一个类比吧,我们知道,我们每个人都有一个名字和一个身份证号,我们可以同名,但我们的身份证号是唯一的。小米做的matlab可能就是借用的这种思想(毕竟都是管理嘛,只不过一个管的是人,一个管的是控件而已)。
matlab里的每个控件都一个编号,就好像我们的身分证号一样,而且它们在整个程序执行期间都是唯一的。它们是在程序打开时由matlab自动分派,并且这个号在程序执行期间是不可改的。程序关闭后这些编号会被自动撤销(其实就是变量嘛,程序一关变量自然就over了),在下次程序启动时会被重新分派,所以你不要指望这次把这个号记住,下次通过这个号再找出对应的控件。但是记住每个控件的号肯定是一个让人头大的事,所以maltab就又给每个控件一个名字Tag,通过Tag我们很容易记住控件的标识。但是名字名字有一个缺点,就是重名的问题,你叫张三,人家也能叫张三,不过好在都是我们给控件命名的,可以避免这一个问题。除了容易记住这一优点外,Tag还有一个优点就是关闭程序后在下次执行时它还是一样的(Tag可以被人为更改,只要你没有改的话它就是不变的),所以下次启动时我们可以通过Tag来找到我们想要的控件。
我们可以看到handles的结构是“Tag:标号”,比如一个控件按钮的Tag是test,标号是100,那么在程序中就有这样一种对应关系test就对应着100,也就是名为test的变量中存着100,而100对应着这个按钮。我们可以更改handles.test的值:
handles.test=99;
guidata(gcf,handles)
但是改过之后你再也不能通过test来找到那个按钮控件了,如果你不幸没有记住那个标号的话,那么你就与那个按钮控件失去联系了。
另外,matlab中获取handles的方法有两种,第一个是通过handles=guidata(gcf)来获得,第二种是通过handles=guihandles来获得,那么这两个有什么区别呢?经过测试发现通过uimenu创建一个新的控件,
h=uimenu(hparent,'Tag','mymenu');
此时用handles=guidata(gcf)所得到的handles中不会有handles.mymenu的(matlab帮助上说了),但是用handles=guihandles得到的却会有handles.mymenu.只有加上下面两句话:
handles.mymenu=h;
guidata(gcf,handles);
才会通过handles=guidata(gcf)得到handles.mymenu;
还应该注意到guidata得到的handles与guihandles得到的handls是不一样的,不能用guihandles得到的handles来覆盖handles.
相关文章推荐
- 用Java快速开发Linux GUI应用-Java基础-Java-编程开发
- 【Qt开发】Qt GUI编程中设置输入等待
- matlab gui 编程
- Matlab---GUI界面编程2(m文件纯代码实现)
- Matlab---GUI编程1
- 总结ecplise3.2下的GUI编程和JSP开发插件的安装配置
- 学习matlab GUI编程的一点点所得
- 无GUI & 无Simulink·MATLAB基础编程•课后答案·《MATLAB程序设计与应用》•第二版•刘卫国
- matlab GUI 编程——mcc转换m文件到应用程序
- matlab GUI界面编程总结
- Matlab------------GUI编程:gui编程数据传递
- Matlab------------GUI编程:gui程序设计与发布
- Matlab GUI 编程体验
- matlab GUI界面编程总结
- matlab GUI界面编程总结
- MATLAB GUI编程中几个有用的程序段
- Matlab------------GUI编程:gui中的变量传递
- Matlab------------GUI编程:运算editbox中的数学表达式
- matlab交互式程序设计示例:GUI界面编程1
- Matlab和java混合编程开发