这是我的问题,我有GUI和一个函数(func1)写在我的图的.m文件之外。我的GUI上还有一个按钮,当按下启动func1时,现在这个功能非常密集,并且在finsh之前可能需要花费很多时间,这就是为什么我能够在我的GUI上写一些东西的功能(insede a静态文本,例如。)。
我的第一个想法是让func1将一些信息写入GUI可以读取的文本文件中,但为此我需要某种类型的多线程编程哦GUI端,看起来像matlab没有那样的东西。< / p>
在第二个地方,我试图让func1调用一个更新(消息)函数来保存与GUI相关的.m文件,但它不起作用,因为更新是一个子功能,似乎没有办法调用一个在包含它的文件外部进行子进程。
有人可以帮助我吗?抱歉我的英语不好。
答案 0 :(得分:2)
传递更新UI的对象,像引用一样使用它。
classdef WindowUpdater < handle
properties(Access=private)
textBox;
end
methods(Access=public)
function this = WindowUpdater(textBox)
this.textBox = textBox;
end
function Update(this,st)
set(this.textBox,'String',st);
drawnow();
end
end
end
使用文本uicontrol
初始化它h = uicontrol('Style','text');
wu = WindowUpdater( h);
将强化功能写为:
function foo(arg1,arg2,wu)
%Do some stuff
wu.Update('Hello world!');
%Do some more stuff
wu.Update('Hello world has finished!');
end
这种方法具有巨大的SW优势: