我更倾向于no0b方面的编码,所以我提前为愚蠢的问题和/或糟糕的编码实践道歉。基本上,我有一个梦想,能够点击,放置一个点,记录该点的位置,然后再次单击另一个点(并记录该点的位置),直到我点击“完成”按钮。然而,我的代码出现了问题。
我的按钮是用下面的代码行创建的。我在前面的代码中将变量j设置为1,只是因为我想用CallBack做两件事,所以我想用某种方式来表明按钮已经被点击(但是,我当然不是作为一个方法附加到这个按钮上的)。当用户点击按钮时,我真的希望1)新的impoint循环停止,2)图像关闭。
uicontrol('Style','pushbutton','Position',80 0 70 20,'String','Done','CallBack','j=0;');
我的impoint循环(删除了我认为不相关的额外内容)如下:
for k = 1:2*mboxes*nboxes
if j == 0
close(gcf);
break;
elseif j == 1
fprintf('At line 56, j is %d and k is %d\n', j, k)
h = impoint;
setColor(h,'k');
location = h.getPosition;
end
clear h;
end目前,我的问题有两个方面。真的,有三个问题,但我可以勉强接受第三个问题。我最关心的第一个问题是,在我想要完成之前,我必须单击按钮,也就是说,我单击按钮,然后在窗口关闭之前设置另一个点。(换句话说,它循环的次数比我想要的要多一次,我不知道如何告诉它不要这么做。)问题2,我确信应该告诉我一些关于它是如何循环的,是在我进行的过程中impoint没有被删除(尽管h在最后看起来确实被删除了)。问题3,这是美学上的,但真的让我恼火,是我一直在我的图像的左上角(0,0)得到一个蓝色的点,然后我点击我真正想要的地方。
任何帮助都会非常,非常感谢。:)
发布于 2014-08-28 19:06:18
我不确定,但我只能在这里回答,不能评论....所以我猜:
解决你的问题2:你的h没有被完全删除,试着用delete(h)代替clear。这也会让你的问题变成3
解决你的问题1: impoint get的点击位置,我假设,即使你点击你的按钮,所以这两个功能(获取impoint和点击事件)可能会重叠,并给你这个错误。也许看一下setPositionConstraintFcn可以帮助你做到这一点(只在你想让它工作的区域启用点击)。
https://stackoverflow.com/questions/25546656
复制相似问题