MATLAB:对变量进行回调?

时间:2011-05-15 01:29:15

标签: matlab callback

我正在尝试使用http://www.mathworks.com/matlabcentral/fileexchange/11546处的uitabpanel()构建包含多个标签的GUI。我想根据当前打开的选项卡调整GUI的大小; uitabpanel.SelectedItem可以使用此功能。

基本上我想构建一个回调来监视uitabpanel.SelectedItem - 当这个变量发生变化时,GUI窗口应该适当调整大小。一般来说,我正在寻找一种监视变量的方法,并在变量值改变时执行回调。

这可能吗?我该怎么做呢?

谢谢!

2 个答案:

答案 0 :(得分:4)

我现在面前没有MATLAB,但是如果它是作为属性实现的 - 而且我可以通过快速查看代码来判断它是 - 你可以使用{ {3}}函数并为其提供回调函数。

addlistener(hTab,'SelectedItem','PostSet',@(s,e)disp('SelectedItem changed'))

答案 1 :(得分:3)

我不熟悉文件交换中的uitab。但是,如果它是基于内置uitab构建的,则应该有selectionChangeCallbackselectionChangeFcn属性(取决于您的Matlab版本)。为此回调属性指定一个函数,您可以在选择更改时执行函数。

如果这是不可能的,监视变量的唯一其他方法(如果你不能以某种方式使用对象和设置方法)是使用TIMER OBJECT定期轮询变量的值。

编辑由于FEX uitab基于uipanel,因此您正在寻找的回调很可能是ButtonDownFcn。在更改之前,请确保uitab功能未使用它,否则,您将需要编辑该功能。