我在Scilab中编写GUI并为pushbutton
控件分配回调。当按下按钮时,另一个控件受到影响,例如文本框内的文本发生变化。整个例程本身(GUI的创建和初始化)都存在于一个函数中,我必须调用我的create_my_gui()
来运行它。
我的问题在于可变范围和回调用法。我的几个按钮以完全相同的方式影响其他几个控件,因此我想使用相同的回调函数并将句柄传递给我试图影响回调的控件。
例如,当我按 N -th按钮时,我想将句柄 N -th控件传递给回调函数:
function buttonPressCallback ( controlHandle )
controlHandle.string = 'Button pressed!';
endfunction
问题是回调被定义为字符串:
myButton3.callback = 'buttonPressCallback ( myTextBox3 )'
在我运行create_my_gui()
函数后,所有变量都超出范围并被销毁,包括处理所有控件。当我按下按钮时,Scilab会尝试运行指定为回调的任何字符串,并抱怨变量,myTextBox3
例如,不存在。
在创建它们的函数退出后,有没有办法可以在Scilab中引用uicontrol?我知道Scilab有很多特殊的方法可以解决问题,也许我只是想到正确的Scilab编程模式。这样做有“正确的方法”吗?
答案 0 :(得分:2)
找到一个体面的解决方案。通过设置uicontrol
,每个myUicontrol.tag = 'my_tag';
都可以标记。然后,可以使用uicontrol
全局查找此my_handle = findobj('tag','my_tag');
。
答案 1 :(得分:0)
您可以通过gcbo访问调用的uicontrol对象,例如:
get(gcbo,"value");