我创建了一个脚本,该脚本进入 while 循环获取传入的 COM 端口数据,并生成一个用所述数据更新的图形。
目前,我没有一种优雅的方法来退出这个循环。我希望能够添加一个按钮来完成此任务,但我对这个主题的了解很模糊。
我并不是真的想创建一个 GUI,想知道是否可以在我的人物上点击一个按钮。
我尝试过的:
创建了一个单独的 m 文件来容纳按钮按下回调以获取按钮状态:
function [button_state] = fun1(hObject, eventData)
button_state = get(hObject, 'Value');
end
在 while 循环中,我有以下按钮声明,其中“fig”是我的图形图:
while 1 > 0
...
fig = figure(1);
...
tb = uicontrol(fig, 'Style', 'togglebutton', 'String', 'Stop', 'Callback', @fun1);
out = fun1(tb);
if out == 1
break;
end
end
似乎不起作用...非常感谢任何帮助。谢谢。
最佳答案
如果您发现自己在主循环中创建了任何对象,那么很可能您没有做正确的事情:在这里,在循环的每次迭代中,您都会创建一个新的切换按钮。但它在视觉上不太明显,因为它们是在同一位置重复创建的。事实上,如果您能够足够快地单击,以便在该按钮被下一个按钮覆盖之前完成单击,那么您的代码就可以工作。
您应该在循环外部创建切换按钮,如果您只对其 Value
属性感兴趣,则无需使用回调。此外,您需要在不同位置使用 drawnow
或 pause
以确保所有事件得到正确处理:
fig = figure(1);
tb = uicontrol(fig, 'Style', 'togglebutton', 'String', 'Stop');
drawnow;
while true
drawnow;
if (get(tb, 'Value')==1); break; end
end
close all
关于matlab - 将按钮添加到 MATLAB 图窗(而非 GUI)以退出循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39502306/