Dynamically create new axes and associated callbacks in GUIDE
조회 수: 12 (최근 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!