为应用程序以编程方式创建编写回调
在你的应用程序的UI组件响应应用程序用户的输入,创建一个回调函数UI组件。一个回调函数是一个函数执行在响应用户交互,比如点击一个按钮。每个UI组件有多个回调函数属性,每一个都对应于一个特定的行动。当用户运行应用程序并执行这些行动之一,MATLAB®执行分配给相关的回调的函数属性。
例如,如果您的应用程序包含一个按钮,您可能想让应用程序更新,当用户点击按钮。你可以通过编写一个函数,执行更新,然后设置ButtonPushedFcn
属性的按钮来处理你的函数。您可以指定一个回调函数,回调属性作为名称参数创建组件时,或者你可以设置的属性从任何地方在您的代码中使用点符号。
确定调属性UI组件,看到特定的UI组件的属性页。
回调函数的参数
当一个UI组件执行一个回调函数,MATLAB自动将两个输入参数传递给函数。这些输入参数通常命名src
和事件
。第一个参数是触发回调的UI组件。第二个参数提供事件数据的回调函数。它提供了特定的事件数据回调属性和组件类型。确定相关的事件数据回调属性,属性页的UI组件,执行回调。
例如,updateDropDown
这些回调函数使用输入条目添加到一个可编辑下拉菜单,当用户输入一个新值。下拉时执行additem
回调,src
包含下拉组件事件
包含的信息交互。这个函数使用event.Edited
属性来检查用户输入的值是一个新值,或一个现有的项目。如果该值是新的,功能使用event.Value
属性值添加到下拉项。
要运行这个函数,将其保存到一个文件命名updateDropDown.m
在MATLAB的道路。下拉菜单中输入一个新值,出版社输入,以及查看更新后的下拉项。
函数updateDropDown无花果= uifigure (“位置”,(500 500 300 200));dd = uidropdown(图,…“可编辑”,“上”,…“项目”,{“红色”,“绿色”,“蓝”},…“ValueChangedFcn”,@addItems);结束函数additem (src、事件)val = event.Value;如果event.Editedsrc。项{结束+ 1}= val;结束结束
指定一个回调函数
指定一个回调函数,回调属性以以下方式之一:
指定一个函数处理
函数处理提供一种方式来表示一个函数作为一个变量。函数可以是一个本地或嵌套函数在同一文件作为应用程序的代码,或一个单独的文件中定义一个函数,在MATLAB的道路。指定创建的函数处理@
操作符的函数的名称。
例如,要创建响应单击一个按钮,将以下函数保存到一个文件中命名codeButtonResponse.m
在MATLAB的道路。使用这段代码创建了一个按钮uibutton
功能和设置ButtonPushedFcn
房地产是一个处理函数buttonCallback
。它创造了这柄使用符号@buttonCallback
。注意,函数处理不明确是指任何输入参数,函数声明包括src
和事件
输入参数。
函数codeButtonResponse无花果= uifigure (“位置”,(500 500 300 200));btn = uibutton(图,“ButtonPushedFcn”,@buttonCallback);函数buttonCallback (src、事件)disp (“按钮按下”);结束结束
指定回调函数作为函数处理的一个好处是,MATLAB检查每个回调函数语法错误和缺失的依赖关系,当你将它分配给组件。如果有问题在一个回调函数,然后用MATLAB立即返回一个错误而不是等待用户触发回调。这种行为可以帮助您在您的代码中发现问题之前,用户遇到它们。
指定一个单元阵列
所有的回调函数接受两个输入参数和事件源。指定一个回调,接受额外的输入参数除了这两个之外,使用单元阵列。细胞数组中的第一个元素是一个函数处理。单元阵列中的其他元素是您想要使用额外的输入参数,之间用逗号分隔。您所指定的函数必须接受源和事件两个参数作为输入参数,所述指定一个函数处理。不过,您可以定义额外的输入函数声明中的前两个参数。
例如,codeComponentResponse
函数创建一个按钮和一个复选框组件,都使用相同的函数作为回调,但通过不同的参数。为不同的组件指定不同的输入参数,设置回调属性的组件单元数组。细胞数组的第一个元素是一个句柄componentCallback
函数,第二个是额外的输入参数传递给函数。
运行这个例子中,函数保存到文件命名codeComponentResponse.m
在MATLAB的道路。当你选择或清除复选框,MATLAB显示器你点击复选框
。当你点击这个按钮,MATLAB显示你点击这个按钮
。
函数codeComponentResponse无花果= uifigure (“位置”,(500 500 300 200));cbx = uicheckbox(图,“位置”(100 125 84 22),…“ValueChangedFcn”,{@componentCallback,“复选框”});btn = uibutton(图,“位置”(100 75 84 22),…“ButtonPushedFcn”,{@componentCallback,“按钮”});函数componentCallback (src、事件comp) disp ([你点击的comp]);结束结束
如指定为回调函数处理,MATLAB检查回调函数指定为细胞数组的语法错误和缺失的依赖关系,当你将它们分配给一个组件。如果有问题在回调函数,然后用MATLAB立即返回一个错误而不是等待用户触发回调。这种行为可以帮助您在您的代码中发现问题之前,用户遇到它们。
指定一个匿名函数
一个匿名函数是一个函数,它不是存储在程序文件中。指定一个匿名函数,当:
你想要一个UI组件来执行一个函数,不支持所需的两个源参数和事件处理函数和细胞阵列。金宝app
你想要一个UI组件来执行一个脚本。
你回调由一个单一的可执行语句。
指定一个匿名函数,创建一个函数处理所需的两个来源和事件执行你的回调函数的输入参数,脚本,或声明。
例如,changeSlider
函数创建一个滑块UI组件和一个滑块按钮增加价值。的incrementSlider
函数没有源和事件输入参数,因为它被设计成可调用回调的内部或外部。执行incrementSlider
当按钮被按下,创建一个匿名函数,该函数接受src
和事件
输入参数,忽略了它们,并执行incrementSlider
。
运行changeSlider
函数,将下面的代码保存到一个文件中命名changeSlider.m
在MATLAB的道路。
函数changeSlider无花果= uifigure (“位置”,(500 500 300 200));s = uislider(图,“位置”,75 150 150 3);incrementSlider;b = uibutton(图,“位置”(100 100 22),…“文本”,“增量”,…“ButtonPushedFcn”@ (src、事件)incrementSlider);函数incrementSlider如果年代。值< s.Limits (2)。值=。值+ 1;结束结束结束
当你的回调是一个单独的可执行语句,您可以指定回调是一个匿名函数,以避免需要定义一个单独的函数声明。例如,下面的代码创建了一个按钮显示按钮按下
当按钮被单击时通过指定一个回调是一个匿名函数。
无花果= uifigure (“位置”,(500 500 300 200));btn = uibutton(图,“ButtonPushedFcn”@ (src、事件)disp (“按钮按下”));
与指定为回调函数处理或细胞阵列,MATLAB不会检查回调函数指定为匿名函数的语法错误和缺失的依赖关系,当你将它们分配给一个组件。匿名函数,如果有问题还未被发现,直到用户触发回调。
指定文本包含MATLAB命令(不推荐)
您可以指定一个回调作为特征向量或一个字符串标量当您想要执行一些简单的命令,但回调会变得难以管理如果它包含超过几个命令。与指定的回调函数处理或细胞阵列,MATLAB不校验字符或字符串向量为语法错误或缺失的依赖关系。MATLAB的表达,如果有一个问题还未被发现,直到用户触发回调。特征向量或字符串指定必须由有效的MATLAB表达式,包括参数的功能。
例如,下面的代码创建了一个UIAxes
对象和一个按钮,情节随机点击时轴上的数据。请注意,特征向量的情节(ax,兰德(20,3))”
包含一个变量,斧头
的变量斧头
必须存在于工作区底部当用户触发回调,或MATLAB返回一个错误。变量不需要存在的时间分配回调属性值,但它必须存在当用户触发回调。
运行代码,然后点击按钮。自斧头
存在于你的基地工作区,回调命令是有效的,和MATLAB块数据。
无花果= uifigure;ax = uiaxes(图,“位置”,(125 100 300 300));b = uibutton(图,“位置”(225 100 22),…“文本”,“阴谋数据”,…“ButtonPushedFcn”,的情节(ax,兰德(20,3))”);