Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function Scilab-在GUI中调用另一个GUI。功能不工作_Function_User Interface_Scilab - Fatal编程技术网

Function Scilab-在GUI中调用另一个GUI。功能不工作

Function Scilab-在GUI中调用另一个GUI。功能不工作,function,user-interface,scilab,Function,User Interface,Scilab,我对scilab非常陌生,我创建了两个GUI(参见下面的示例),其中脚本2是从脚本1调用的。但是,脚本2中的函数似乎不起作用。有人能帮忙吗 脚本1 '////////// f=figure('figure_position',[0,0],'figure_size',[1250,650]); ////////// delmenu(f.figure_id,gettext('File')) delmenu(f.figure_id,gettext('?')) delmenu(f.figure_id,ge

我对scilab非常陌生,我创建了两个GUI(参见下面的示例),其中脚本2是从脚本1调用的。但是,脚本2中的函数似乎不起作用。有人能帮忙吗

脚本1

'//////////
f=figure('figure_position',[0,0],'figure_size',[1250,650]);
//////////
delmenu(f.figure_id,gettext('File'))
delmenu(f.figure_id,gettext('?'))
delmenu(f.figure_id,gettext('Tools'))
toolbar(f.figure_id,'off')

handles.dummy = 0 ;

handles.exam=uicontrol(f,'unit','normalized','BackgroundColor',        [0.5,1,1],'Enable','on','FontAngle','normal','FontName','helvetica','FontSize',[14],'FontUnits','points','FontWeight','bold','ForegroundColor',[0,0.5,0],'HorizontalAlignment','center','ListboxTop',[],'Max',[1],'Min',[0],'Position',[0.5,0.5,0.1,0.05],'Relief','flat','SliderStep',[0.01,0.1],'String','exam','Style','pushbutton','Value',[0],'VerticalAlignment','middle','Visible','on','Tag','obj102','Callback','exam_callback(handles)')

function exam_callback(handles)
close(f);
clear
exec('costs0-1.sce',-1) ; 
endfunction`
脚本2

////////// Defining the figure (size, name etc)/////////////////////////////
f=figure('figure_position',[0,0],'figure_size',[1250,650],'auto_resize','on','background',[8]);

//////////
delmenu(f.figure_id,gettext('File'))
delmenu(f.figure_id,gettext('?'))
delmenu(f.figure_id,gettext('Tools'))
toolbar(f.figure_id,'off')



//Cabinet - TEXT
handles.obj17=uicontrol(f,'unit','normalized','BackgroundColor',[1,1,1],'Enable','on','FontAngle','normal','FontName','helvetica','FontSize',[12],'FontUnits','points','FontWeight','normal','ForegroundColor',[0,0,0],'HorizontalAlignment','center','ListboxTop',[],'Max',[1],'Min',[0],'Position',[0.15,0.93,0.1,0.05],'Relief','flat','SliderStep',[0.01,0.1],'String','Cabinet','Style','text','Value',[0],'VerticalAlignment','middle','Visible','on','Tag','obj17','Callback','')

// Cabinet - POP UP MENU
handles.service=uicontrol(f,'unit','normalized','BackgroundColor',[0.8,0.8,0.8],'Enable','on','FontAngle','normal','FontName','helvetica','FontSize',[12],'FontUnits','points','FontWeight','normal','ForegroundColor',[0,0.5,0],'HorizontalAlignment','center','ListboxTop',[],'Max',[1],'Min',[0],'Position',[0.25,0.93,0.15,0.05],'Relief','flat','SliderStep',[0.01,0.1],'String','1|2','Style','popupmenu','Value',[1],'VerticalAlignment','middle','Visible','on','Tag','service','Callback','service_callback(handles)')


// CALCULATE  PUSHBUTTON
handles.Calculate=uicontrol(f,'unit','normalized','BackgroundColor',[0,0.8,0],'Enable','on','FontAngle','normal','FontName','helvetica','FontSize',[16],'FontUnits','points','FontWeight','bold','ForegroundColor',[0,0,0],'HorizontalAlignment','center','ListboxTop',[],'Max',[1],'Min',[0],'Position',[0.22,0.02,0.15,0.08],'Relief','raised','SliderStep',[0.01,0.1],'String','CALCULATE','Style','pushbutton','Value',[0],'VerticalAlignment','middle','Visible','on','Tag','Calculate','Callback','Calculate_callback(handles)')

 // Resources- TEXT
 handles.Resourcestxt=uicontrol(f,'unit','normalized','BackgroundColor',[1,1,1],'Enable','on','FontAngle','normal','FontName','helvetica','FontSize',[14],'FontUnits','points','FontWeight','bold','ForegroundColor',[0,0.5,0],'HorizontalAlignment','center','ListboxTop',[],'Max',[1],'Min',[0],'Position',[0.75,0.95,0.20,0.05],'SliderStep',[0.01,0.1],'String','Resources in hours','Style','text','Value',[0],'VerticalAlignment','middle','Visible','on','Tag','','Callback','')

// TOTAL hours - TEXT
handles.totalhourstxt=uicontrol(f,'unit','normalized','BackgroundColor',[1,1,1],'Enable','on','FontAngle','normal','FontName','helvetica','FontSize',[14],'FontUnits','points','FontWeight','bold','ForegroundColor',[0,0.5,0],'HorizontalAlignment','center','ListboxTop',[],'Max',[1],'Min',[0],'Position',[0.75,0.75,0.12,0.05],'SliderStep',[0.01,0.1],'String','Total Hours','Style','text','Value',[0],'VerticalAlignment','middle','Visible','on','Tag','','Callback','')

// hardware hours  - text
handles.totalhours=uicontrol(f,'unit','normalized','BackgroundColor',[0.95,1,1],'Enable','on','FontAngle','normal','FontName','helvetica','FontSize',[14],'FontUnits','points','FontWeight','bold','ForegroundColor',[0,0.5,0],'HorizontalAlignment','center','ListboxTop',[],'Max',[1],'Min',[0],'Position',[0.88,0.75,0.08,0.05],'SliderStep',[0.01,0.1],'String','','Style','text','Value',[0],'VerticalAlignment','middle','Visible','on','Tag','totalhours','Callback','')

function Calculate_callback(handles)
if handles.service.value == 1 then
resource_hrs = 2
end

if handles.service.value == 2 then
resource_hrs = 10
end

set(handles.totalhours,'String',string(resource_hrs));

endfunction
问题 这是一个范围界定问题。调用函数
exam\u callback()
时,它将使用
exec('costs0-1.sce',-1)
运行另一个脚本。 在该脚本中定义函数
Calculate\u callback(handles)
。这超出了范围,在
exam\u callback()
完成时被删除,因此在按下按钮时无法调用

第二个问题是句柄不会受到全局影响,因此当离开
exam\u callback()
时,第二个Cost Gui的句柄不会添加到
句柄中

解决方案 您可以将GUI的生成移动到函数
createCostGui()
中,然后在script1的开头用
exec('costs0-1.sce',-1)加载script2

要使
Calculate\u回调(句柄)
函数放弃handles参数,并使用标记查找句柄

function Calculate_callback()

    serviceHandle = findobj('tag','service');

    if serviceHandle.value == 1 then
        resource_hrs = 2
    end

    if serviceHandle.value == 2 then
        resource_hrs = 10
    end

    totalHoursHandle = findobj('tag','totalhours');

    set(totalHoursHandle,'String',string(resource_hrs));

endfunction
进一步评论 文本元素通常是静态的,因此不需要回调参数。 如果希望参数保持默认值,则无需指定它们

从:

h=uicontrol(PropertyName,PropertyValue,…)创建一个uicontrol并为其指定属性和值。它将默认值指定给未指定的任何特性。默认的uicontrol样式是“按钮”。默认父对象是当前图形。有关这些属性和其他属性的信息,请参阅“属性”部分

对你的问题说几句话


下次出现错误消息时,您的问题可能会更具体。

非常感谢您花费的时间和精力,效果非常好!