2013-07-27 64 views
0

這是一個MATLAB GUI。我有一個while循環運行。但在循環中,我需要使用不同的回調鍵盤輸入。有沒有辦法或者有可能在循環中執行回調?MATLAB GUI中的迴路中的回調函數

注意:我正在使用GUIDE

+0

你的意思是在while循環中你想要鍵盤輸入來調用while循環中的各種函數嗎? – voxeloctree

+0

這些是GUIDE – Chandough

+0

Ahhhhh生成的GUI的回調函數,與我的想法完全不同。感謝您的澄清。 – voxeloctree

回答

1

是的,這是可能的。您只需要將按鍵回調中的字符數據轉換爲循環中的回調。做這件事的一種方法是通過figure guidata。

例如,如果你的循環是由一個按鈕回調運行,並且希望看到圖中的按鍵,你可以使用以下命令:

按鈕回調

% --- Executes on button press in pushbutton1. 
function pushbutton1_Callback(hObject, eventdata, handles) 

fig = get(hObject,'Parent'); 
for i=1:1000 
    pause(0.01); 
    % Get the latest guidata 
    handles = guidata(fig); 
    if isfield(handles,'KeyData') && ~isempty(handles.KeyData) 
     fprintf(1,'Pressed : %s\n', handles.KeyData.Character); 
     % Clear the keydata we have now handled. 
     handles.KeyData = []; 
     guidata(fig,handles); 
    end 
end  

圖按鍵回調

% --- Executes on key press with focus on figure1 and none of its controls. 
function figure1_KeyPressFcn(hObject, eventdata, handles) 

% Store the keypress event data for use in the looping callback 
handles.KeyData = eventdata; 
guidata(hObject,handles); 
+0

for循環是否在while循環中進行? – Chandough

+0

@Chandough - 是的,我只是把它寫成for循環來展示它如何工作。你只需要從%得到最新的guidata代碼。 – grantnz

+0

我剛試過。它沒有工作。 – Chandough