2013-06-26 62 views
1

我正在創建一個GUI(不使用GUIDE) 我正在尋找一個方便用戶輸入一些數據的方法。我認爲可用將是理想的,除非我似乎無法弄清楚如何存儲表中的用戶輸入。 我寧願不使用celleditcallback函數 - 理想情況下,我希望最終使用保存按鈕或類似的任何想法一次性保存數據?爲表 代碼(這是它自己的功能內):保存來自可用matlab GUI的用戶輸入?

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(GCF)你函數並在將表數據分配給輸出之前。

看看這個例子:

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

我剛剛意識到,您可能需要將變量保存在句柄對象以外的其他位置,因爲當關閉無花果時,請關閉可用的對象。我知道你不想編輯editcell回調函數,但是你只需要輸出outputTable = get(myTable,'Data');然後讓你的輸出只是「outputTable」。你仍然需要waitfor命令。 – Shaun314