2015-02-13 4 views
0

Я использую программу на основе Matlab, которая делает некоторые приятные графики некоторых результатов модели. Он добавляет слайды и кнопки uicontrol в цифрах. У меня нет опыта с gui-программированием в Matlab, и мне это не нужно, я просто хочу добавить на мой скрипт matlab пару строк, чтобы скрыть слайды и кнопки. Я могу сделать это вручную из редактора свойств и установить «Visible» на «off», но я читал руководство Matlab и не объяснял, как получить существующий uicontrol и изменить его свойства. Любой намек? Я попробовал это без везения:Как скрыть существующий uicontrol в Matlab перед печатью?

b = get (gcf, 'uicontrol'); set (b, 'Style', 'pushbutton', 'Visible', 'off');

Благодаря

ответ

1

Вам просто нужно, чтобы получить доступ к элементу из структуры ручки и изменить его свойства оттуда.

Например, если кнопка находится в структуре ручки, как это:

handles.b %// Whatever name you gave it and see in the Property Inspector 

вы можете сделать его не видно с помощью команды

set(handles.b,'Visible','off') 

и также для каждых других свойств.

Маленький трюк. Если вам нужно многократно включать и отключать элементы вашего графического интерфейса, вы можете поместить их в массив дескрипторов, например, в графическом интерфейсе графического интерфейса Opening_Fcn и изменить их все сразу, используя этот массив в любом месте GUI. Таким образом, вам не придется всегда называть их один за другим, что может быть утомительным.

Пример:

handles.AllButtons = [handles.button1; handles.button2; handles.button3] 

это содержит дескрипторы 3 кнопок, скажем. Теперь, если юй необходимо включить их все/на в то же время, вы можете сделать:

set(handles.AllButtons,'Visible','off') 

а не делать

set(handles.button1,'Visible','off') 
set(handles.button2,'Visible','off') 
set(handles.button3,'Visible','off') 

От GUIDE, вы можете проверить фактическое имя любого компонента UIControl в Инспекторе недвижимости. Вот скриншот из GUI я сделал с GUIDE:

enter image description here

В этом случае тег, связанный с кнопкой является pushbutton28_ReferenceChannelApply.

Поэтому для того, чтобы изменить какой-либо из его свойств, я должен был бы использовать:

set(handles.pushbutton28_ReferenceChannelApply,'Property','value') 

EDIT 2

Вы можете искать кнопок в вашем GUI с findobj команды, как так:

FindButtons = findobj('Style','push') 

, который выдаст массив этих ручек этим кнопкам.Затем вы можете запросить их свойства с помощью команды get:

get(FindButtons(1)) 
+0

Мои проблемы - получить ручки uicontrol. Поскольку я их не создавал, я понятия не имею, что это за ручки! – Lupocci

+0

Mmm У меня есть эта фигура с ползунком и кнопкой, созданной программным обеспечением на основе Matlab (у меня нет исходного кода, он скомпилирован). Я открыл гид (в нижнем регистре), он попросил меня загрузить существующий gui. Единственное, что я придумал, это сохранить фигуру и загрузить ее в руководстве. Я нажал кнопку инспектора, но поле тега пусто. Неужели так сложно получить ручки? Должна быть команда из командной строки ... – Lupocci

+0

Отлично, что сделал трюк спасибо – Lupocci

Смежные вопросы