【发布时间】:2019-10-20 11:42:04
【问题描述】:
Octave 相对较新,我正在创建一个简单的图形窗口,其中包含轴对象中的绘图和一些可以操纵绘图的 uicontrol 对象。到目前为止,一切都非常简单,我制作了图形、轴和 uicontrols
figure(1, 'position', ...
h.ax = axes(...
h.button = uicontrol('style', 'pushbutton', 'string', 'press me', 'callback', @func)
h.label = uicontrol(...
guidata(gcf, h)
问题来自我的一个按钮回调。按下按钮时,不仅绘图会改变,而且我需要从 gui 中删除其中一个元素,例如 uicontrol 标签。我发现从图形窗口中获取 gui 元素的唯一方法是删除 uicontrol 对象,所以我的回调看起来像
function func (obj)
h = guidata(obj);
delete(h.label);
...
guidata(obj, h);
endfunction
这会产生“错误:guidata:H 必须是图形回调函数中的有效对象句柄执行错误”。
我怀疑我的错误对于掌握 Octave / Matlab 中图形句柄如何工作的人来说是显而易见的。这对了解问题所在有很大帮助。
【问题讨论】:
-
您的代码看起来不错。唯一需要两个参数的回调函数:对象和事件。除了这个错误,我可以在 MATLAB 中运行我们的代码。
标签: matlab user-interface octave