回调函数在MATLAB GUI的循环中

时间:2013-07-27 19:22:27

标签: matlab user-interface matlab-guide

这是一个MATLAB GUI。我有一个while循环运行。但是在循环中我需要使用键盘输入,这是一个不同的回调。有没有办法或者是否可以在循环中执行该回调?

注意:我正在使用GUIDE

1 个答案:

答案 0 :(得分:1)

是的,这是可能的。您只需要将keypress回调中的字符数据传递给循环中的回调。一种方法是通过图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);