2013-07-27 4 views
0

Это графический интерфейс MATLAB. И у меня есть цикл while. Но в то время как в цикле мне нужно использовать входы клавиатуры, которые являются другим обратным вызовом. Есть ли способ или можно выполнить этот обратный вызов, когда он находится в цикле?Функции обратного вызова в цикле в графическом интерфейсе MATLAB

Примечание: Я использую GUIDE

+0

Вы хотите сказать, что внутри цикла while вы хотите, чтобы входы клавиатуры вызывали различные функции внутри цикла while? – voxeloctree

+0

Это функции обратного вызова для графического интерфейса пользователя, созданного GUIDE – Chandough

+0

Ahhhhh, который сильно отличается от того, что я думал. Спасибо за разъяснение. – voxeloctree

ответ

1

Да, это возможно. Вам просто нужно получить данные символа от обратного вызова keypress к обратному вызову, который находится в цикле. Один из способов сделать это - через руководство по фигуре.

Например, если ваш цикл работает от кнопки обратного вызова, и вы хотите увидеть нажатие на рисунке вы можете использовать следующее:

Кнопка Ответный

% --- 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, чтобы показать, как он может работать. Вам просто нужен код из% Получить последние рекомендации. – grantnz

+0

Я просто попробовал. Это не сработало. – Chandough

Смежные вопросы