Dynamically create new axes and associated callbacks in GUIDE
3 次查看(过去 30 天)
显示 更早的评论
I made a GUI using GUIDE that plays multiple videos. Each video is displayed in an axes which was created in GUIDE. However, I need to dynamically create axes depending on the number of videos that the user selects.
My initial hack is to create a single axes in GUIDE and set the Visible attribute to 'off'. Then on the Callback from the filebrowser make a bunch of copies of the axes:
for idx = 1:num_videos
eval(['handles.axes' num2str(idx) ' = handles.axes1']);
% set size, location, tags, etc.
end
Then in a second loop, set the visibility:
for idx = 1:num_videos
eval(['handles.axes' num2str(idx) '.Visible = ''on''']);
end
However, I'm really looking for a better way to do this. Can I just initialize an object of the axes class and set the attributes that way and how can I do it without using eval? Also, would the Parent be the handles object itself or the base Figure itself (matlab.ui.Figure)?
Secondly, if I want to (dynamically) create an associated button, how can I dynamically add callback functions? Using GUIDE, it creates a separate Callback for each button based on the tag, but if I'm creating a button in the .m file what is the best way to accomplish this?
3 个评论
Stephen23
2020-4-6
handles.(sprintf('axes%d',idx)) = ...
Or avoid the entire complexity by using a much simpler and more efficient array of handles and indexing:
handles.myaxes = gobjects(N,1);
...
handles.myaxes(idx) = ...
回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Migrate GUIDE Apps 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!