У меня есть приложение MATLAB App.mlapp в определенной папке ~/myapp/
. Используемые им функции и некоторые графические элементы, используемые в графическом интерфейсе, указаны в ~/myapp/subfolder
. Чтобы правильно запустить App.mlapp , мне нужно каждый раз вручную добавлять ~/myapp/subfolder
в мой путь перед запуском приложения.
Как автоматически добавить подпапку?
Я пытался поставить addpath(genpath(~/myapp/subfolder));
в начале StartupFcn
. Однако, поскольку StartupFcn
вызывается после создания компонента, который уже требует часть графики в ~/myapp/subfolder
, этот подход не работает. Компоненты создаются с использованием автоматически созданной функции createComponents
, которую нельзя редактировать с помощью редактора конструктора приложений.
Минимальный пример, запрошенный excaza. Чтобы создать его, откройте Дизайнер приложений, создайте новое приложение, добавьте кнопку в представлении «Дизайн» и укажите значок в пути с помощью Свойства кнопки -> Текст и значок -> Дополнительные свойства -> Файл значка . После этого удалите каталог значка из пути и попробуйте запустить приложение.
classdef app1 < matlab.apps.AppBase
% Properties that correspond to app components
properties (Access = public)
UIFigure matlab.ui.Figure
Button matlab.ui.control.Button
end
% App initialization and construction
methods (Access = private)
% Create UIFigure and components
function createComponents(app)
% Create UIFigure
app.UIFigure = uifigure;
app.UIFigure.Position = [100 100 640 480];
app.UIFigure.Name = 'UI Figure';
% Create Button
app.Button = uibutton(app.UIFigure, 'push');
app.Button.Icon = 'help_icon.png';
app.Button.Position = [230 321 100 22];
end
end
methods (Access = public)
% Construct app
function app = app1
% Create and configure components
createComponents(app)
% Register the app with App Designer
registerApp(app, app.UIFigure)
if nargout == 0
clear app
end
end
% Code that executes before app deletion
function delete(app)
% Delete UIFigure when app is deleted
delete(app.UIFigure)
end
end
end