gpt4 book ai didi

matlab - 更新 Matlab gui 的所有组件(使用指南创建)

转载 作者:行者123 更新时间:2023-12-02 06:04:59 26 4
gpt4 key购买 nike

我的 Matlab GUI 是一个包含许多文本字段的表单,这些文本字段最初使用相同的数据结构填充。每个文本字段都有一个回调和一个创建函数,其中文本字段被分配给定结构的值。但是,在稍后的某个时刻,我想使用不同的结构重新填充表单,作为按下按钮触发的事件。代码大致如下:

h = MyFigure;
global mystruct

mystruct = somevalues;

handles = guidata(h);

set( handles.textfield1, 'String', mystruct.value1 )
...
set( handles.textfieldN, 'String', mystruct.valueN )

但是,如果我可以让 Matlab 递归地调用所有这些回调(如“验证树”函数),我就不必为每个文本字段调用“set”。我尝试过刷新(h)和drawow(),但没有运气。

现在我的问题是matlab引导框架中是否内置了这样的功能?

最佳答案

当您设置句柄的属性(如set(h,'String',str))时,str 的值将被复制。它不是对该变量的引用,可以自动更新。最好的选择是创建一个名为 updateText 或类似名称的子例程,将所有 set 语句放入其中,并在需要时调用它。

调用guidata(hObject, handles);仅用于通过对handles的修改来更新 GUI。您可能在其他地方需要它,但对于更新某些句柄图形对象的属性的工作,它并没有真正使用。

<小时/>

一种可能性是创建 timer定期更新文本字段。在 GUI 的打开函数中,创建一个计时器,定义定期运行的更新函数:

T = timer('Period',1,'StartDelay',0.5,'TimerFcn', ...
{@updateTextBoxes,handles},'ExecutionMode','FixedRate');
start(T)

更新函数如下所示:

function updateTextBoxes(hTimerObj, timerEvent, handles)
global mystruct
% get mystruct data however you do it...
% maybe also get handles via handles=guidata(hTimerObj); instead of input
set( handles.textfield1, 'String', mystruct.value1 )
...
set( handles.textfieldN, 'String', mystruct.valueN )

编辑:在退出 GUI 或执行 clear T 之前,不要忘记删除计时器 (delete(T)) 或停止计时器>,否则它将继续运行,您将不得不退出 MATLAB...不,我自己不只是这样做!

关于matlab - 更新 Matlab gui 的所有组件(使用指南创建),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20503959/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com