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
User interface 向MatlabGUI动态添加字段?_User Interface_Matlab - Fatal编程技术网

User interface 向MatlabGUI动态添加字段?

User interface 向MatlabGUI动态添加字段?,user-interface,matlab,User Interface,Matlab,我正在使用GUIDE生成一个MatlabGUI,但我想在用户单击按钮时创建字段。有没有办法在回调中动态添加新的GUI对象?使用UICONTROL,您将能够添加“字段”(称为UICONTROL或小部件) 您将需要指定获取编辑框、按钮等的样式 实际上,您可能希望将所有小部件都放在GUIDE中,然后根据需要更改visibility或enabled属性 您可以在此处找到我关于在MATLAB中构建GUI的视频教程: 这应该涵盖GUI构建中的这一主题和许多相关主题。实现这一点的一种方法是在开始时创建GUI

我正在使用GUIDE生成一个MatlabGUI,但我想在用户单击按钮时创建字段。有没有办法在回调中动态添加新的GUI对象?

使用UICONTROL,您将能够添加“字段”(称为UICONTROL或小部件)

您将需要指定获取编辑框、按钮等的样式

实际上,您可能希望将所有小部件都放在GUIDE中,然后根据需要更改visibility或enabled属性

您可以在此处找到我关于在MATLAB中构建GUI的视频教程:


这应该涵盖GUI构建中的这一主题和许多相关主题。

实现这一点的一种方法是在开始时创建GUI对象,但将其“可见性”属性设置为“关闭”。然后,当用户单击按钮时,将“可见性”属性设置回“打开”。这样,您就不会在GUI运行时创建新的GUI对象,您只需更改其中哪些部分是可见的或不可见的

编辑:如果您在运行时之前不知道需要多少新的GUI对象,您可以这样将新的GUI对象添加到handles结构中(其中hFigure是GUI图形的句柄):

当然,您必须为新的GUI对象编写回调函数(如果需要的话),该函数可能如下所示:

function p_Callback(hObject,eventdata)
  handles = guidata(gcbf);  % This gets the handles structure from the figure
  ...
  (make whatever computations/changes to GUI are needed)
  ...
  guidata(gcbf,handles);  % This is needed if the handles structure is modified

我在上述代码中使用的感兴趣的函数有:(用于存储/检索GUI数据)和(获取当前正在执行回调的对象的父图形的句柄)。

问题是,我不知道在运行时之前需要创建多少。我可以通过更改创建的gui句柄来完成吗?我尝试设置:p=uicontrols(图,“样式”,“按钮”,“字符串”,“测试”)(handles.test=p),但它给了我错误。还有其他方法吗?上面列出的set命令是一个问题。你想用它完成什么?好吧,我正在尝试gnovice的编辑,出于某种原因,当我在guide生成的回调中运行它时,它最终改变了一个现有的元素。我的代码:new_t=uicontrol(hObject,'Style','edit'),然后我尝试:K>>get(new_t,'Style')ans=butdown这很奇怪,因为set(handles.test,'Style','edit')最终会更改handles.butdown.Style。有什么想法吗?hObject是图形的句柄还是另一个GUI对象?我觉得hObject是按钮的手柄。尝试改用GCBF函数:new_t=uicontrol(GCBF,'Style','edit');我可以将创建的uicontrol对象添加到生成的句柄中吗?类似于set(handles.test,uicontrol_元素)的内容在创建uicontrol时,捕获句柄:handles.newWidget=uicontrol(……)
function p_Callback(hObject,eventdata)
  handles = guidata(gcbf);  % This gets the handles structure from the figure
  ...
  (make whatever computations/changes to GUI are needed)
  ...
  guidata(gcbf,handles);  % This is needed if the handles structure is modified