Я пишу программу OO gui, и у меня возникают проблемы с использованием функции set()
для изменения свойств элемента GUI. Я просто пытаюсь сменить кнопки, чтобы включить свойство from off to on. Я приложил сокращенный код, показывающий ту же проблему ниже. То, как Matlab обрабатывает классы и т. Д., Кажется довольно странным, поэтому проблема может быть просто вызвана моим непониманием системы. Во всяком случае, когда я пытаюсь использовать функцию set()
на handle AD.buttonExit
, она работает как ожидалось, когда я выполняю команду в функции initUI()
. Если я попытаюсь сделать то же самое в другой функции, он терпит неудачу. Я проверил стеки, просто распечатав контенты AD
. В функции initUI
оно явно показывает значение дескриптора для buttonExit
, оно не находится в функции конструктора (или любой другой функции-члена). Я чувствую, что делаю элементарную ошибку, но я не вижу ее, и я надеюсь, что кто-то сможет мне помочь.GUI-дескрипторы в классах
- rfhigler
код (сокращенный для ясности):
classdef test
properties
AppUI;
buttonExit;
end
methods
function AD = test()
%draws UI
AD.initUI();
set(AD.buttonExit, 'Enable', 'on')
AD.test2()
end
function initUI(AD)
AD.AppUI = figure('Visible','off','Position',[520,321,695,482], 'MenuBar', 'none', 'Name', '3D Particle Tracking',...
'NumberTitle', 'off', 'Resize', 'off', 'Color', [0.94,0.94,0.94]);
AD.buttonExit = uicontrol('Enable', 'off', 'Style', 'pushbutton', 'Visible', 'on', 'Position', [35,29,181,31], 'String', 'Exit');
set(AD.AppUI, 'Visible', 'on');
%1 set(AD.buttonExit, 'Enable', 'on')
end
function test2(AD)
set(AD.buttonExit, 'Enable', 'on')
end
end
end
Не могли бы вы добавить образец кода, где странное поведение имеет место? Кстати. как первое предположение, у меня был бы класс, наследующий класс 'handle'. – bdecaf