gpt4 book ai didi

matlab - 将按钮添加到 MATLAB 图窗(而非 GUI)以退出循环

转载 作者:行者123 更新时间:2023-12-02 20:58:21 27 4
gpt4 key购买 nike

我创建了一个脚本,该脚本进入 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 属性感兴趣,则无需使用回调。此外,您需要在不同位置使用 drawnowpause 以确保所有事件得到正确处理:

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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com