【问题标题】:Matlab getting cursor info with no clickMatlab无需点击即可获取光标信息
【发布时间】:2015-05-21 12:35:55
【问题描述】:

我有 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 调用即可查看)。

【问题讨论】:

    标签: matlab user-interface


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-18
      • 2013-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多