2013-06-26 10 views
1

Я создаю GUI (не используя GUIDE) Я ищу удобный способ для пользователя ввести некоторые данные. Я полагал, что подходящий будет идеальным, за исключением того, что я не могу понять, как сохранить вход пользователя из таблицы. Я бы предпочел не использовать функцию celleditcallback - в идеале я хотел бы сохранить данные сразу в конце с помощью кнопки сохранения или аналогичных идей? код таблицы (это в пределах своей собственной функции):сохранение ввода пользователя из графического интерфейса пользователя Matlab?

dat = {0, 0, 0, true;... 
     0, 0, 0, true;... 
     0, 0, 0, true;}; 
columnname = {'x-pos', 'y-pos', 'dimns', 'Include?'}; 
NC = numel(columnname); 
rowNumber = zeros(NR,NC); 
columnformat = {'numeric', 'numeric', 'numeric','logical'}; 
columneditable = [true true true true true]; 
rowname = {'Dat1','Dat2','Dat3'}; 
Config = uitable('Units','normalized','Position',[0 0 0.2 0.4],... 
      'Data', dat,... 
      'ColumnName', columnname,... 
      'ColumnFormat', columnformat,... 
      'ColumnEditable', columneditable,... 
      'RowName',rowname); 
cell2mat(dat(:,1:3)); 
gh =get(Config,'Data'); 

Заранее спасибо за любые советы

ответ

1

Я думаю, что большая вещь, что вам нужно WaitFor (ГКМ) в конце вашего и перед назначением данных таблицы на выход.

Проверьте этот пример:

function [out1]=myGUIwithATable(inputs..) 

myTable=uitable(.......) 

waitfor(gcf) 

%This command will wait until you close the GUI before doing the code after 
% it. We use this to allow you to enter all your data and whatnot, then once 
% you close the fig, it will execute your save commands 

out1=get(myTable,'Data'); 

Так что ^^^ как вы можете назначить выходные переменные в таблицу значений

Сохранение с помощью кнопки очень легко. На обратном вызове вашей кнопки просто сделайте

save('fileName.mat',get(myTable,'Data')) 

Надеюсь, что это поможет!

+0

Спасибо! Я понятия не имел о функции waitfor, я думаю, что это сделает трюк! ура! – richyo1000

+0

Я только что понял, вам может потребоваться сохранить переменную в чем-то, кроме объекта handles, потому что, когда вы закрываете фига, вы закрываете его. Я знаю, что вы не хотите редактировать обратный вызов editcell, но все, что вам нужно сделать, это сказать: outputTable = get (myTable, 'Data'); Затем сделайте свой вывод просто «outputTable». Тем не менее, вам все равно нужна команда waitfor. – Shaun314