在Matlab中,如何在没有GUI的情况下调用GUI回调函数?

时间:2016-03-10 02:53:56

标签: matlab user-interface matlab-figure

我不是GUI程序员,因为很明显。如果有的话,我试图取消制作GUI。我正在使用一个名为art的程序(找到here,如果看起来很有用),它会生成我想要保存的数字和变量。您可以从批处理脚本中调用art,并使其读取其输入的配置文件,这就是我正在做的事情,但您必须在GUI中手动生成并保存其大部分输出(变量和图形)。我喜欢自动化这个过程,但我真的很挣扎。

如果我知道如何强制调用回调函数,我认为我的问题的核心将会得到解决。例如,art showCorr_Callback(hObject, eventdata, handles)中有一个函数(由GUI中的单选按钮控制)。它有一个执行的测试条件:

if (get(handles.showCorr,'Value') == get(handles.showCorr,'Max'))

我试过插入

mx = get(handles.showCorr,'Max')) 
setappdata(handles.showCorr,'Value', mx) 

进入我知道执行的函数,即打开函数function art_OpeningFcn(hObject, eventdata, handles, varargin)。这似乎没有任何效果。如果我知道如何使回调函数执行,也许我可以插入将图形保存到函数中的代码。在Matlab的GUI脚本中,必须有一些东西不断测试GUI中的状态变化。那是什么东西?我怎么能欺骗它以为按下单选按钮?

感谢您的帮助,如果我需要提供更多信息,请告诉我。

1 个答案:

答案 0 :(得分:1)

首先,如果您要设置Value的{​​{1}},则不会使用setappdata,因为它只存储任意数据(按键/值对)进入图形对象。您实际上想要设置Value property

handles.showCorr

这应该触发分配给set(handles.showCorr, 'Value', get(handles.showCorr, 'Max')) 的任何回调。

如果由于某种原因,这不会触发回调,您可以随时手动触发它。如果您已经知道回调,则可以明确地调用它。

handles.showCorr