Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
我有这行代码:
delete_btn = uicontrol(rr_ops, 'Style', 'pushbutton', 'String', 'Delete Graphic', 'Position', [13 135 98 20], ... 'Callback', 'delete_graphic'); 并在此功能的上方: function delete_graphic global rr_list selected = get(rr_list, 'Value'); selected return; 为什么此代码不起作用?我真的不明白... 我需要什么?我创建一个按钮和一个列表框,然后单击按钮-从列表框中删除选定的元素。 谢谢。 PS总是出现此错误: ??? Undefined function or variable 'delete_graphic'. ??? Error while evaluating uicontrol Callback 这是我的所有代码: http : //paste.ubuntu.com/540094/ (第185行) 回答: 通常, 定义回调函数的方法是使用函数句柄而不是字符串。使用字符串时,将在基本工作区中评估字符串中的代码。这意味着在评估回调时,字符串中使用的所有变量和函数都必须存在于基本工作空间中。这会导致GUI设计不佳,因为您实际上并不希望GUI的操作依赖于基本工作空间(用户可以轻松地对其进行修改,从而有可能破坏您的GUI)。 这也解释了您遇到的错误。函数delete_graphic在文件rr_intervals.m定义为子函数 。子函数只能由同一m文件中定义的其他函数调用,因此delete_graphic在基本工作空间(评估字符串回调的位置)中不可见。使用函数句柄回调是更好的选择。这是您的处理方式:
如果要将其他参数传递给delete_graphic ,则可以执行以下步骤:
更多&回答... |
![]() |
![]() |