Dynamically create new axes and associated callbacks in GUIDE
10 views (last 30 days)
Show older comments
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 Comments
Stephen23
on 6 Apr 2020
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) = ...
Answers (0)
See Also
Categories
Find more on Migrate GUIDE Apps in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!