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