Matlab获取光标信息,无需点击

时间:2015-05-21 12:35:55

标签: matlab user-interface

我有Matlab应用程序,用户需要点击图表中的一个点,然后在消息框中确认点击。我使用getCursorInfo获取当前点击的位置。如果用户没有确认点选择,则应选择另一个点。

问题是,有时用户选择“否”后,在消息框中,getCursorInfo返回一个新位置,而无需用户单击鼠标。就像getCursorInfo认为鼠标按钮持续关闭一样。

以下是演示此内容的最小代码示例 - 在显示消息框的第3或第4次之后,Matlab认为鼠标按钮已关闭并且无需任何单击即可更改光标位置。

fig = figure;
data = peaks();
plot(data);

old_pos = [-2 -2]
cur_pos = old_pos
while 1
    datacursormode on
    dcm = datacursormode(fig);
    while all(cur_pos==old_pos)
        pause(0.25);
        ci = getCursorInfo(dcm);
        if ~isempty(ci)
            cur_pos = ci.Position;
        end
    end
    display(cur_pos);
    old_pos = cur_pos
    datacursormode off
    questdlg('Question?');
end

如果没有对话框,此代码允许用户根据需要选择尽可能多的点而不会混淆(只需注释questdlg调用即可查看)。

1 个答案:

答案 0 :(得分:0)

原来解决方案是here,我需要使用以下行删除数据游标:

delete(findall(fig,'Type','hggroup'));