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