2015-01-09 359 views
0

我只是想用MATLAB GUI編程反應測試。Matlab GUI按鈕反應

我有一個按鈕,在每次點擊後,隨機出現,隨後顯示下一次單擊所需的時間。

現在我希望這個按鈕消失10次後點擊它。

我該如何編程,在第10次點擊後,它只是執行「關閉所有」?

+0

您的主要問題是您需要在某處保留計數器,但您的GUI回調函數沒有任何持久變量。問問你自己:在一個你可以在你的GUI回調函數調用之間訪問的地方,你可以在哪裏保存一個'counter'變量? –

回答

0

這是一些代碼,它可以做你想做的。

As @ Li-aung提到,我添加了一個計數器來跟蹤按鈕被按下的次數。計數器存儲在圖形的手柄結構中;但是爲了簡單起見,您可以將其變爲全局變量。

下面是評論代碼:

function RandomButton(~) 


hFig = figure('Position',[100 100 200 200],'Visible','off'); 

handles.CounterText = uicontrol('Style','text','Position',[50 150 60 30],'String','Counter') 
handles.DisplayCounterText = uicontrol('Style','text','Position',[50 100 60 30],'String','0') 

handles.Button = uicontrol('Style','pushbutton','position',[50 50 60 30],'String','Push here','Callback',@(s,e) Push); 

handles.PushCounter = 0; %// Initialize counter 

movegui(gcf,'center') 
set(hFig,'Visible','on') 

guidata(hFig,handles) 

    function Push 

     handles = guidata(hFig); 

     handles.PushCounter = handles.PushCounter +1; 

     set(handles.DisplayCounterText,'String',num2str(handles.PushCounter)); 

     if handles.PushCounter < 10 %// Assign condition to stop. 

     set(hFig,'Visible','off'); 
     set(hFig,'Position',[1000*rand(1) 1000*rand(1) 200 200]); %// Assign random position 

     set(hFig,'Visible','on'); 

     guidata(hFig,handles) %// Update handles structure. Important! 

     else 

      close all 
     end 

    end 
end 

這裏是GUI的截圖:

enter image description here

希望幫助讓你開始!

+0

因此@freaky是否嘗試了我的建議? –