【发布时间】: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