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