2015-02-23 48 views
1

這是我第一篇文章,所以大家好!如何禁用MATLAB GUI元素在處理函數期間(而不是之後)

我的問題是關於MATLAB GUI界面。在我的代碼中,有一個來自按鈕的函數回調,並且我想在處理此回調期間禁用GUI中的每個推/滑動元素。不幸的是,當我在回調開始時將這些元素的'enable'屬性設置爲'off',然後在最後將其設置爲'on'時,屬性不會改變。 我想我知道它爲什麼會發生。可能是因爲如果回調改變了任何東西,它就發生在函數完成之後,並且它內部的每個更改都不會影響函數之外的任何元素,直到處理完成。這就是爲什麼我沒有看到所有這些元素都被禁用 - 因爲在函數結束時,我將所有內容都設置爲「開啓」,這是唯一發生的事情。 對此 - 有沒有任何選項可以在執行函數期間更改「啓用」屬性?代碼如下所示:

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 
+0

我不確定明白究竟是不是工作抱歉哈哈。 ui控件是否在函數開始時被正確禁用,或者它們似乎始終處於啓用狀態?如果你評論「函數做了些什麼」的部分呢?控件是否被禁用然後啓用? – 2015-02-23 18:06:10

+0

感謝您的回覆,問題是GUI在回調開始後的程序後未被禁用。在評論「功能做一些東西」仍然是一樣的。 我想說的是,該函數可能會執行任何事情後,它結束執行自己。所以,如果我禁用前按鈕。 5秒鐘後再次啓用,按鈕啓用,因爲一切都發生在功能內部。唉,我不知道該怎麼說...函數只執行變量或實例的最後一次更改?我認爲這是重點。 – NotMyF4ult 2015-02-23 18:38:43

回答

2

嘗試使用drawnow命令初始後啓用/ GUI控制禁用和前行:

%%%%%%%%%%%%%%% %%%%%這裏的功能有一些東西%%%%%%%%%%%%%%%%

這應該會導致MATLAB刷新排隊的GUI事件並更新屏幕,然後再移動到功能。

+0

是的!而已!非常感謝,它解決了我的問題:) – NotMyF4ult 2015-02-23 19:10:58

相關問題