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

标签 matlab button

我创建了一个脚本,该脚本进入 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/

相关文章:

python - 从 Python 调用 C/C++ 代码

Android:许多相同的按钮,onclick 某些情况下不起作用

jquery - 如何防止按钮倍增?

android - jetpack compose 中的滑动按钮菜单

ios - 点击 Sprite 时发生的其他 Action ;如何预防

android - 在 Android 中捕获按钮释放

matlab - 是否可以在 MatLab 的脚本中定义局部函数?

matlab - MATLAB 中的 SVM 可视化

matlab - 在 MATLAB 中删除统一列

java - matlab javaaddpath 不再工作(使用 jdk 1.7 构建的 jar)