while循环阻止从gui读取回调

时间:2019-03-10 21:11:27

标签: user-interface while-loop callback scilab

我正在尝试向GUI添加一个停止按钮,该按钮可用于中止gui和执行while while循环后台。考虑代码:

function pushFun(button)
    disp("Push!")
endfunction

h = figure(1);
set(h,'UserData',1);

button = uicontrol(h, 'Style', 'pushbutton', 'String', 'Stop',..
        'Position', [0 0 60 25], 'callback', 'pushFun',..
        "callback_type", 2);

效果很好。但是代码:

function stopgui()
    global guistop;
    guistop = %t;
endfunction

h = figure(1);
set(h,'UserData',1);

global guistop
guistop = %f;

button = uicontrol(h, 'Style', 'pushbutton', 'String', 'Stop',..
        'Position', [0 0 60 25], 'callback', 'stopgui',..
        "callback_type", 2);

while ~guistop

    // some code here
    sleep(100)
end

不响应按钮交互。如果您能帮助我知道问题出在哪里以及如何解决,我将不胜感激。

PS 类似的讨论:onetwo

1 个答案:

答案 0 :(得分:1)

您必须使用回调类型10(优先(或不间断)的Scilab指令):

button = uicontrol(h, 'Style', 'pushbutton', 'String', 'Stop',..
                   'Position', [0 0 60 25], 'callback', 'stopgui',..
                   'callback_type', 10);