如何在处理函数期间(而非之后)禁用 MATLAB GUI 元素

How to disable MATLAB GUI elements DURING (not AFTER) processing a function

第一次post来这里,大家好!

我的问题是关于 MATLAB GUI 界面的。在我的代码中,有一个来自按钮的函数回调,我想在处理此回调期间禁用我的 GUI 中的每个 push/slide-able 元素。不幸的是,当我在回调开始时将这些元素的 'enable' 属性 设置为 'off' 然后在结束时将其设置回 'on' 时,属性 不变。 我想我知道为什么会这样。可能是因为如果回调更改任何内容,它会在函数完成后立即发生,并且在处理完成之前,它内部的每个更改都不会影响函数外部的任何元素。这就是为什么我没有看到所有这些元素被禁用 - 因为在函数结束时我设置了所有内容 'on' 并且这是唯一发生的事情。 关于这一点 - 在执行功能期间,我可以更改 'enable' 属性 的任何选项吗?代码如下:

function [] = mListLaunchButton_call(varargin)

    // Some global declarations
    global a phi launchBlanker
    global servoNumber servoZeroPosition servoDegreePerDegree servoDirection

    // Assigning a class
    Manual = varargin{3};

    // Enabling "Stop" button and disabling everything else

        set(Manual.listStopButton,'enable','on');
        set(Manual.listSaveButton,'enable','off');
        set(Manual.listDeleteButton,'enable','off');
        set(Manual.listClearButton,'enable','off');
        set(Manual.listLaunchButton,'enable','off');
        set(Manual.closeButton,'enable','off'); 

        for i = 1 : 5
            set(Manual.sliderDOF(i),'enable','off');
        end

        %%%%%%%%%%%%%%%%%%%% HERE FUNCTION DOES SOME STUFF %%%%%%%%%%%%%%%%

    // Disabling "Stop" button and enabling eveything else 

    set(Manual.listStopButton,'enable','off');
    set(Manual.listSaveButton,'enable','on');
    set(Manual.listDeleteButton,'enable','on');
    set(Manual.listClearButton,'enable','on');
    set(Manual.listLaunchButton,'enable','on');
    set(Manual.closeButton,'enable','on'); 

    for i = 1 : 5
        set(Manual.sliderDOF(i),'enable','on');
    end

尝试在初始 enabling/disabling GUI 控件之后和行之前使用 drawnow 命令:

%%%%%%%%%%%%%%%%%%% 这里的函数做一些事情 %%%%%%%%%%%%%%%%

这应该会导致 MATLAB 刷新排队的 GUI 事件并更新您的屏幕,然后再进入函数的主体部分。