Аналог input в GUI

Обсуждение вопросов связанных с компиляцией, созданием GUI приложений.

Модератор: Admin

norden87
Пользователь
Сообщения: 2
Зарегистрирован: Сб июн 09, 2018 9:26 pm

Аналог input в GUI

Сообщение norden87 » Сб июн 09, 2018 9:45 pm

Здравствуйте. В GUI новичок, поэтому прошу у вас помощи.
Есть программа, в которой после ввода пути к файлу .csv c 5 столбцами данных выполняется построение графиков зав-ти столбцов № 2:5 от № 1. Графики строятся последовательно после нажатия Enter, для этого используется input.
Вот фрагмент 1:

for k=2:size(NNN,2)
nazvan=[nazvanie,' вх.',int2str(k-1)];
N=NNN(:,[1,k]);
N1=NNN1(:,[1,k]);
plot(N(:,1),N(:,2), N1(:,1),N1(:,2));
grid on; zoom xon;
title(nazvan);
q=input('Продолжать?');
end;

Я переношу эту программу в GUI и не могу понять как сделать, чтобы в одном окне axes эти графики строились последовательно по нажатию button.
Вот фрагмент 2 GUI:

function edit1_Callback(hObject, eventdata, handles)
marshr=get(handles.edit1, 'String');
set(handles.edit1,'string',marshr);
...
фрагмент 1


Подскажите, пожалуйста, как заменить input в GUI.

Jey
Пользователь
Сообщения: 2658
Зарегистрирован: Вт сен 12, 2006 2:21 pm

Re: Аналог input в GUI

Сообщение Jey » Вс июн 10, 2018 3:02 pm

Я бы делал так:
1. Завел глобальную переменную (ключевое слово global), в которой хранил текущий индекс цикла for - в Вашем примере это k.
2. По нажатию на кнопку делал k = k + 1 и выполнял то, что в Вашем примере находится внутри цикла.
q=input('Продолжать?'); - эта строка не нужна.
Помощь в Матлабе / Matlab, Qt за деньги.
Помощь в html, css, jquery, MVC за деньги.
Помощь в C# / C sharp / Си шарп за деньги.
Вконтакте: https://vk.com/id122995106
или Личное сообщение на форуме.
http://ПунктыПроката.рф

norden87
Пользователь
Сообщения: 2
Зарегистрирован: Сб июн 09, 2018 9:26 pm

Re: Аналог input в GUI

Сообщение norden87 » Пн июн 11, 2018 12:28 am

Спасибо! Более-менее проясняется :)
Но одновременно с этим возникла следующая проблема.
Для каждого графика я ввожу зоны некой обработки. После ввода в edit правой границы этой зоны происходит обработка с выдачей переменной REGISTR. Далее я сохраняю ее в файл registr.mat:
save registr REGISTR

Проблема в том, что файл registr.mat в итоге имеет размер 1x1 и содержит REGISTR для последнего графика, после которого я завершаю программу. Мне же нужно, чтобы registr.mat имел размер 1xN, где N - число обработанных графиков до завершения программы, и содержал результаты REGISTR для N графиков.

Jey
Пользователь
Сообщения: 2658
Зарегистрирован: Вт сен 12, 2006 2:21 pm

Re: Аналог input в GUI

Сообщение Jey » Вт июн 12, 2018 10:56 am

global REGISTR;
REGISTR = [REGISTR newValue];
save registr REGISTR;
где newValue - новое значение, которое надо добавить в REGISTR.
Помощь в Матлабе / Matlab, Qt за деньги.
Помощь в html, css, jquery, MVC за деньги.
Помощь в C# / C sharp / Си шарп за деньги.
Вконтакте: https://vk.com/id122995106
или Личное сообщение на форуме.
http://ПунктыПроката.рф