萝岗网站建设优化,客户关系管理软件免费,网站可以个人备案吗,网站建设在哪个软件下做目录前言上期教程按钮介绍按钮(pushbutton)如何在窗口中创建一个按钮常用属性常用属性练习回调函数的编写规则设置回调函数#xff1a;定义(编写)回调函数#xff1a;NoteGUI中各个回调函数之间数据的传递setappdatagetappdata方法按钮的回调函数前言上期教程按钮介绍这个按钮… 目录前言上期教程按钮介绍按钮(pushbutton)如何在窗口中创建一个按钮常用属性常用属性练习回调函数的编写规则设置回调函数定义(编写)回调函数NoteGUI中各个回调函数之间数据的传递setappdatagetappdata方法按钮的回调函数前言上期教程按钮介绍这个按钮是GUI界面中用的最多的一个控件了上期教程中的GUI界面中的元素一图中列出了10个UI控件按钮(pushbutton)就是其中的第一个。这些UI控件的基本属性都一样所以本期讲完了按钮的常用的属性后后面那些按钮的属性就不详细展开讲了。这个按钮和开关不一样对于按钮你点一下后就会弹回原来的状态。如果是开关的话你按一下他会一直保持你按下之后的状态直到你再次按下开关后才会变回原来的状态这个开关对应的UI控件是togglebutton(切换按钮)。按钮(pushbutton)如何在窗口中创建一个按钮function main()close all%% 创建主窗口, 打三个点可以换行书写一行写多了不太好h_fig figure(Name, MATLAB_GUI_教程(2)pushbutton, ... MenuBar, none, ... ToolBar, none);%% 创建一个按钮btn uicontrol(Style, pushbutton, Parent, h_fig);end如你所见这里是用uicontrol函数来创建按钮的。uicontrol函数就是用来创建UI控件的该函数返回创建出来的控件的句柄。UI控件的Style属性是用来控制UI控件的类型UI控件的Parent属性是用来控制该控件放在哪里(此处是直接放在主窗口中)还记得上篇教程中说的用下面这种方式来设置控件的属性么btn uicontrol(属性1, 值1, 属性2, 值2, 属性3, 值3);我们在创建UI控件时比较习惯用这种方式来创建当然你也可以像下面这样来创建不过我看着比较别扭%% 创建一个按钮btn uicontrol;btn.Parent h_fig;btn.Style pushbutton;上面那个创建的结果如下图1常用属性这里常用属性这里不包括按钮的那些回调函数回调函数那些单独说。上面已经认识了按钮的两个属性了其实我觉得不应该说是按钮的属性应该说是UI控件的属性因为这个按钮只是当UI控件的Style属性为pushbutton时的情况。和figure一样按钮也有很多属性我们不可能把他们都记住顶多记几个常用的就行了。我以前初学时连常用的都时常记不住那怎么办呢怎么知道它有那些属性呢以及怎么知道相应的属性应该设置哪些值呢。其实这些在上期推送中就已经讲过了直接在matlab命令行中输入下面一行代码注意不要打分号这样可以输出有哪些属性btn uicontrol结果如下图2实际上它给我们显示出来的这些就是常用的属性不过下面我会多添加几个Style控制UI控件的类型默认为pushbutton在创建按钮时可以不下但最好还是在创建时写上它。Parent控制UI控件的父容器通俗的说就是告诉UI控件该放在谁上面(直接的关系)目前还没讲布局就只能直接放在figure上当讲了布局后这些控件都放在布局里面。虽然布局还是直接或者间接地放在figure中。为了说明按钮放在哪里所以这个Parent属性必须写(虽然有时不写也行)。String显示在按钮(UI控件)上的字符串。Tag按钮(UI控件)的ID就跟我们的身份证一样。这个在GUIDE中用的多在GUIDE中通过handles.tag可以获取相应的控件在纯代码编写GUI时多用于fandobj函数。这个就不细讲了知道存在这么个东西就好。BackgroundColor设置按钮的背景色可以是表示颜色的字母如k, r, g, b等也可以是1*3的向量每个元素在0-1之间代表r,g,b的值。ForegroundColor按钮上的字符串(String)的颜色FontSize按钮上的字符(String)的大小FontName按钮上的字符(String)的字体Visible控制该按钮是否可见默认是可见的Units控制按钮的Position的值的单位常用像素为单位pixels如果要设置单位那么单位一定要在Position之前设置。Position控制按钮在窗口中的位置。以电脑屏幕为坐标平面的话那么电脑屏幕的左下角点就是原点position的值为[x, y, w, h]:图3实际上通常也就用Style, Parent, String, Units, Position, 以及后面讲的callback。如果在熟悉了 布局 之后连Units和Position都用不上。获取属性可以设置哪些属性值的方法还是和上期推送一样。不过在UI控件这好多属性你这样无法获取某属性可以设置哪些值此时就要去帮助文档中看看了图4常用属性练习在一个窗口中放一个宽400高100的按钮按钮上的文字为Im Mith Hong。文字的颜色为红色文字的大小为18按钮的背景色为黑色。function main()close all%% 创建主窗口h_fig figure(Name, MATLAB_GUI_教程(2)pushbutton, ... MenuBar, none, ... ToolBar, none);%% 创建一个按钮btn uicontrol(Style, pushbutton, ... Parent, h_fig, ... String, Im Mitch Hong, ... FontSize, 18, ... ForegroundColor, r, ... BackgroundColor, k, ... Units, pixels, ... Position, [50 50 400 100]);end结果如下图5回调函数的编写规则设置回调函数uicontrol(Callback,{btn_callback,input1,input2,…})其中回调函数名为btn_callbackbtn_callback表示获取该回调函数的句柄input1,input2,….为向callback中传入实际参数把他们用大括号括起来构成一个细胞数组作为Callback的属性值。回调函数的名字可以任意取但是要有意义。定义(编写)回调函数function btn_callback(obj,eventdata,input1,input2)其中obj与eventdata必须要有而且顺序不能颠倒如果函数体内用不上可以把这两个位置用 ~ 来替换掉,从第三个位置开始按顺序接受需要的输入。obj表示当前你所点击的那个UI控件的句柄event是一个事件通常在uitable那用的多这里先不解释。不要问为什么这是规则记就完事了。Note好像在16版开始才能在同一个m文件中写多个函数如果是14版的需要把回调函数单独写成一个文件GUI中各个回调函数之间数据的传递setappdata利用setappdata把数据保存到figure的appdata中setappdata(h_fig, myData1, data1)其中data1是我们的数据这样就能把data1保存到figure的appdata中的myData1里面了。getappdata利用getappdata从figure的appdata中获取数据data1 getappdata(h_fig, myData1);方法因此我们只需要向各个回调函数中传递主窗口的句柄即可这样就能在不同的回调函数中传递数据了。另外一般我比较习惯把数据变量的名字和appdata中的名字写成相同的即setappdata(h_fig, data1, data1)data1 getappdata(h_fig, data1);如果不太明白的话看看下面的例子就明白了。按钮的回调函数这个在上面的回调函数的编写规则中已经讲了这里就直接来个例子了。例在一个窗口中创建4个按钮在上面标号为1234点击按钮1时隐藏按钮2显示按钮3点击按钮3时隐藏按钮1显示按钮2点击按钮2时显示按钮1隐藏按钮3点击按钮4时都显示function main()close all%% 创建主窗口h_fig figure(Name, MATLAB_GUI_教程(2)pushbutton, ... MenuBar, none, ... ToolBar, none);%% 创建按钮btn1 uicontrol(Style, pushbutton, ... Parent, h_fig, ... String, 1, ... Units, pixels, ... Position, [50 50 50 50], ... Callback, {callback_btn1, h_fig});setappdata(h_fig, btn1, btn1); % 把btn1保存到appdata中以便于在其他回调函数中使用btn2 uicontrol(Style, pushbutton, ... Parent, h_fig, ... String, 2, ... Units, pixels, ... Position, [50 200 50 50], ... Callback, {callback_btn2, h_fig});setappdata(h_fig, btn2, btn2); % 把btn2保存到appdata中以便于在其他回调函数中使用btn3 uicontrol(Style, pushbutton, ... Parent, h_fig, ... String, 3, ... Units, pixels, ... Position, [200 200 50 50], ... Callback, {callback_btn3, h_fig});setappdata(h_fig, btn3, btn3); % 把btn3保存到appdata中以便于在其他回调函数中使用btn4 uicontrol(Style, pushbutton, ... Parent, h_fig, ... String, 4, ... Units, pixels, ... Position, [100 300 50 50], ... Callback, {callback_btn4, h_fig});setappdata(h_fig, btn4, btn4); % 把btn4保存到appdata中以便于在其他回调函数中使用end%% 按钮1的回调函数obj和event我都用不上所以用~代替function callback_btn1(~, ~, h_fig)% 获取2 3 按钮btn2 getappdata(h_fig, btn2);btn3 getappdata(h_fig, btn3);% 点击按钮1时隐藏按钮2显示按钮3btn2.Visible off;btn3.Visible on;end%% 按钮2的回调函数obj和event我都用不上所以用~代替function callback_btn2(~, ~, h_fig)% 获取1 3 按钮btn1 getappdata(h_fig, btn1);btn3 getappdata(h_fig, btn3);% 点击按钮2时显示按钮1隐藏按钮3btn1.Visible on;btn3.Visible off;end%% 按钮3的回调函数obj和event我都用不上所以用~代替function callback_btn3(~, ~, h_fig)% 获取2 1 按钮btn2 getappdata(h_fig, btn2);btn1 getappdata(h_fig, btn1);% 点击按钮3时隐藏按钮1显示按钮2btn2.Visible on;btn1.Visible off;end%% 按钮4的回调函数obj和event我都用不上所以用~代替function callback_btn4(~, ~, h_fig)% 获取1 2 3 按钮btn1 getappdata(h_fig, btn1);btn2 getappdata(h_fig, btn2);btn3 getappdata(h_fig, btn3);% 点击按钮4时都显示btn1.Visible on;btn2.Visible on;btn3.Visible on;end结果如下finall