MATLAB编程式应用函数回调失效,无报错但触发失败求助
问题原因与解决方案
核心问题
触发按钮仅出现系统错误音但回调未执行,本质是回调函数中引用了未定义的变量fileLoad1——MATLAB在回调作用域内找不到这个变量,导致静默报错(GUI回调的错误默认不会在命令行输出,仅触发系统提示音)。
修复代码
将回调函数中对按钮对象的引用替换为回调的第一个输入参数src(src就是被点击的按钮实例):
function obj = selectLoad( grid ) %Create file load 1 obj.fileLoad1 = uibutton(grid, 'push'); obj.fileLoad1.FontSize = 36; obj.fileLoad1.Layout.Row = [8 9]; obj.fileLoad1.Layout.Column = 1; obj.fileLoad1.Text = 'Load 1'; obj.fileLoad1.ButtonPushedFcn = {@fileLoad1Callback}; end function fileLoad1Callback(src, event) % 用src指代被点击的按钮对象 src.Text = 'Ice Cream'; end
额外扩展(如需访问对象其他属性)
如果需要在回调中访问obj的其他属性,可以将obj作为额外参数传入回调:
% 在selectLoad函数中修改回调绑定 obj.fileLoad1.ButtonPushedFcn = {@fileLoad1Callback, obj}; % 对应的回调函数定义 function fileLoad1Callback(src, event, obj) src.Text = 'Ice Cream'; % 示例:访问obj的其他属性 % obj.someOtherProperty = 'Updated'; end
内容的提问来源于stack exchange,提问作者user28134562
相关产品推荐
相关产品推荐

