У меня есть структура, содержащая некоторые параметры отладки i.e: dbs = struct('db1', 0, 'db2', 1)
. И пользователь может добавить дополнительные параметры отладки в эту структуру (, db4
и т. Д.) Позже, а также изменить значение существующих полей db1
, db2
.matlab - GUIDE с входными аргументами - uimenu autoupdates его подменю
Я хочу создать графический интерфейс пользователя dbGUI
с uimenu Debug options
. dbGUI
следует принимать dbs
в качестве входного аргумента, поэтому я положил varargin
мое OpeningFcn GUI, так что я могу назвать GUI из командного окна, как dbGUI(dbs)
:
function dbGUI_OpeningFcn(hObject, eventdata, handles, varargin)
handles.dbNames = fieldnames(varargin{1});
handles.dbVal = cellfun(@(i) varargin{1}.(i), handles.dbNames);
uimenu «Параметры отладки» должны показать подменит, соответствующие с dbs
-х поля. Я хочу: как автоматически обновлять подменю, когда пользователь изменяет структуру dbs
вне внешнего интерфейса графического интерфейса (в окне команд Matlab)?
Как было предложено с помощью @marco wassmer ниже, структура dbs
должна быть объявлена как класс дескриптора, унаследованный от dynamicprops
и с использованием addlistener
. Проблема заключается в следующем: когда пользователь меняет dbs
в окне команд, функция updateFoo
не может получить дескрипторы dbGUI
, поэтому не может обновить значение для дескрипторов, и, наконец, uimenu_CallbackFcn не сможет обновить новые поля и значения.
Примечание. Я пытаюсь использовать графический интерфейс программно, но я предпочитаю GUIDE, так как мне легче компоновать компоненты.
спасибо за ваше предложение. Но я не только хочу изменить значение полей, но и добавить больше полей. Я нашел что-то полезное с 'dynamicprops', но не смог заставить его запустить ... – scmg
@scmg Я изменил anwser, чтобы использовать класс' dynamicprops', спасибо за ввод, довольно интересный этому классу –
еще раз спасибо, но, к сожалению , ваш пример кода для класса имеет так много мелких ошибок, и я, наконец, не знаю, что GUI не работает из-за ошибок в функциях GUI или ошибок в классе ... – scmg