Matlab 从其他函数创建uitable后如何更新?
我创建了一个matfile,在其中存储不断被用户行为覆盖的数据。这发生在函数“test()”中 此代码仅在“m=test()”运行结束时执行,并向我显示一个选项卡,在该选项卡中我可以看到“n”的最终值。但是,我希望我的表在显示之前显示,并看到我的值根据用户的行为递增。Matlab 从其他函数创建uitable后如何更新?,matlab,user-interface,matlab-figure,matlab-guide,matlab-uitable,Matlab,User Interface,Matlab Figure,Matlab Guide,Matlab Uitable,我创建了一个matfile,在其中存储不断被用户行为覆盖的数据。这发生在函数“test()”中 此代码仅在“m=test()”运行结束时执行,并向我显示一个选项卡,在该选项卡中我可以看到“n”的最终值。但是,我希望我的表在显示之前显示,并看到我的值根据用户的行为递增。 我已经在网上搜索来解决我的问题,但是我找不到任何答案,有可能做这样的事情吗?假设我正确地解释了这个问题,如果在调用test之前初始化表,然后将句柄传递给表,以便test在while循环中更新,则完成此任务应该相当简单: 例如: f
我已经在网上搜索来解决我的问题,但是我找不到任何答案,有可能做这样的事情吗?假设我正确地解释了这个问题,如果在调用
test
之前初始化表,然后将句柄传递给表,以便test
在while
循环中更新,则完成此任务应该相当简单:
例如:
function testGUI
% Initialize table
t = uitable('ColumnWidth',{50}, 'Position',[100 100 461 146]);
test(t)
function test(t)
n = 1;
while n < 5
n = n + 1;
t.Data = n;
pause(0.25); % Since we're just incrementing a number, a slight so we can actually see the change
end
函数测试GUI
%初始化表
t=uitable('ColumnWidth',{50},'Position',[100 100 100 461 146]);
测试(t)
功能测试(t)
n=1;
而n<5
n=n+1;
t、 数据=n;
暂停(0.25);%因为我们只是在增加一个数字,所以我们可以看到变化
结束
当您运行上面的程序时,您会注意到表中的数据按预期进行迭代。编写与我基本相同的答案时,速度稍微快了一点。因为它看起来有点不同,我还是会把它贴出来
function storagetest()
close all
f = figure;
data = [1];
t = uitable(f,'Data',data,'ColumnWidth',{50});
test()
end
function test()
% handle uitable
t = evalin('caller','t')
n = 1;
while n < 5
newVal = input('Enter a number:');
data = get(t,'Data');
set(t,'Data', [data; newVal]);
n = n + 1;
end
end
函数存储测试()
全部关闭
f=数字;
数据=[1];
t=uitable(f,'Data',Data,'ColumnWidth',{50});
测试()
结束
功能测试()
%可操纵的手柄
t=evalin('caller','t')
n=1;
而n<5
newVal=input('输入一个数字:');
data=get(t,'data');
集合(t,'Data',[Data;newVal]);
n=n+1;
结束
结束
我用input
函数模拟的“用户行为”。基本思想是从test()
中更新表<如果不想将参数传递给test()
,则可以使用code>evalin,不过直接传递uitable的句柄肯定是更好的选择
如果您正在从事一个严肃的GUI项目,我强烈建议您阅读。非常感谢@excaza!但是,您认为我仍然可以存储数据吗?我的目标是,通过使用matfile来保存变量“n”值的记录(我这样做是因为我想知道用户在什么时候做了这个操作,所以这对我很重要)。@ManaV是的,您的代码不需要更改您上面提供的代码,只需在调用
test
并将t
传递到test
(或使用,其功能类似)之前,将t.data=which
添加到test
,并初始化t
,即可。链接很棒,以前从未见过这个问题!谢谢@thewaywewalk,我希望我也能选择正确的答案!别担心,excaza速度更快,答案基本相同
function testGUI
% Initialize table
t = uitable('ColumnWidth',{50}, 'Position',[100 100 461 146]);
test(t)
function test(t)
n = 1;
while n < 5
n = n + 1;
t.Data = n;
pause(0.25); % Since we're just incrementing a number, a slight so we can actually see the change
end
function storagetest()
close all
f = figure;
data = [1];
t = uitable(f,'Data',data,'ColumnWidth',{50});
test()
end
function test()
% handle uitable
t = evalin('caller','t')
n = 1;
while n < 5
newVal = input('Enter a number:');
data = get(t,'Data');
set(t,'Data', [data; newVal]);
n = n + 1;
end
end