gusucode.com > matlab界面设计的一些资料笔记,可以做为初学者参考用 > GUI制作中文资料/GUI笔记I.txt
1。Callback之间数据传递方式: 1)宣告为全局变量:即在每个callback函数中都设置为全局变量global; 2)存在userdata中。例如:set(ui_handle,'userdata',value)%value数据存储在句柄值为ui_handle的对象内。 value1 = get(ui_handle,'userdata');%在任意一个callback函数中取出value值。 例: string = str2mat('这是一个Usedata的范例,由Matlab输入文字后,存储在窗口的userdata属性中,再于需要使用该资料的',... '对象内由get来取得窗口的Userdata属性值'); set(gcf,'userdata',string,'position',[250 250 250 150]); edit_pl = uicontrol(gcf,'style','edit','max',2,'position',[28 35 200 80],'string',get(gcf,'userdata')); 3)使用setappdata\getappdata与rmappdata函数 a. getappdata函数:可由定义的对象中获得特定的变量值,value= getappdata(h,name),即获得句柄值为h的对象中的名字为name的变量 b. setappdata函数:setappdaata(h,name,value)在句柄值为h的对象中建立一个名称为name内容为value的值 c. rmappdata函数:rmappdata(h,name)移除定义的对象h中由setappdata指定的变量name的值。 例: A = magic(3);%建立一个3*3的矩阵,元素值为1到3的平方 setappdata(gcf,'A',A); uicontrol('string','显示矩阵A','callback','A = getappdata(gcf,''A'')','position',[250 250 150 150]); %uicontrol默认的对象类型为push button 4)结合handles结构和guidata函数,不推荐使用,因为容易在变量过多时使程序变得复杂。 handles.变量名称 = 变量值;%取得数据 guidtata(h,handles); %存储数据 例: handles.y = y; handles.f = f; %y和f是当前callback中运算的两个值 guidata(hobject,handles);%hobject是当前callback的句柄值 y = handles.y; f = handles.f; %在任一callback中可以获取上述两个变量值。 2。 opening function 说明:是GUIDE中非常重要的函数,主要用以执行GUI界面显示前所必须做的准备工作,即一般程序开始执行前的初始设置值。如果用户在 GUI显示后必须自动加载图形,就可以将imread函数写到该函数中,使该GUI一执行就读取相对应的图文件。 function syb1_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure %当前figure窗口的句柄值 % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to syb1 (see VARARGIN) % Choose default command line output for syb1 handles.output = hObject; %设置handles数据域位 % Update handles structure guidata(hObject, handles); %将handles数据域位存储,这样就可以用handles来传递对象的句柄值和数据,如handles.figure1就 可以返回名称为figure1的句柄值,不需要通过findobj函数来查找了。 % UIWAIT makes syb1 wait for user response (see UIRESUME) % uiwait(handles.figure1); % --- Outputs from this function are returned to the command line. 3. 如下所示的callback函数: function mypushbutton_Callback(hObject, eventdata, handles) mypushbutton是该对象属性Tag卷展栏的名称,该对象的句柄值可由以下方式获得:A = handles.mypushbutton;A = findobj('tag','mypushbuton')。 4。使用outputfcn就可以将运算的结果输出到Matlab的工作空间中; 使用assignin函数指定Matlab工作空间中的变量值,因此就可以将运算结果传到该变量中去; 通过save函数存储为Mat文件,再在命令窗口中通过load函数来将该Mat文件加载到Matlab工作空间中; 用set(0,‘userdata',...),...就是要输入的变量数据,再通过get(0,’userdata')将这一数据加载使用。 5. 可以在属性编辑器中编辑对象的callback,也可以在M文件中编辑。切记如果要在M文件编辑器内编写Callback程序,那么属性检查器里的Callback不能修改,这样 Callback就会自动指向M文件编辑器内的Callback。 6. 菜单编辑请看menu.m的设置。 7. 要将context menu附着于某对象上,就是将该对象的uicontextmenu属性设置为主context menus菜单的tag名称 8. 常用菜单说明: open菜单:必须用M文件来编辑callback程序,用callback中的uigetfile来打开指定的文件,如下所示: file = uigetfile('*.fig');%打开扩展名为.fig的文件 if ~isequal(file,0) %若文件存在,则打开文件 open(file); end 9. Import菜单:在callback中输入uiimport即可 10. print菜单:在callback中输入printdlg即可 11.exit菜单:在callback中使用questdlg对话框,如下所示: selection = questdlg(['是否关闭',get(gcf,'name'),'窗口?'],['close',get(gcf,'name'),'...'],'Yes','No','Yes');%是否关闭',get(gcf,'name'),'窗口?——对话框内容,% close',get(gcf,'name'),'...对话框标题 if strcmp(selection,'No') return; else delete(gcf); end 12. Help菜单:当设置好一GUI后,编写一个说明文件并存储为.html文件,就可以从菜单中通过web函数来调用这个说明文件。在Callback中输入如下程序即可: web(['file:'which('menu.html')]);%打开工作目录下的menu.html文件 13. View菜单: 检视XY平面直接在Callback文本框中输入view(0,90) 检视XZ平面直接在Callback文本框中输入view(0,0) 检视YZ平面直接在Callback文本框中输入view(90,0) 检视XYZ 3D立体面直接在Callback文本框中输入view(3) 14.Max与Min:有效值为纯量 Checkboxes与Radio Buttons:当此类对象被选取时,则Value属性会被设为Max的值,默认Max为1;当此类对象不被选取时,则Value属性会被设为Min的值,默认 为Min为0。 Editable Text:Max-Min>1时,可多行输入;若Max-Min<=1时,仅允许单行输入 Listboxes:Max-Min>1时,允许复选操作;若Max-Min<=1时,不允许复选操作 Sliders:Max用以设置Sliders的最大值,默认值为1;Min为最小值,默认为0 Toggle Buttons:对象被选取,Value属性会被设为Max的值,默认Max为1,Toggle被释放后,Value属性为Min的值,即0