2011-05-15 2 views
3

나는 http://www.mathworks.com/matlabcentral/fileexchange/11546에있는 uitabpanel()을 사용하여 여러 개의 탭으로 GUI를 작성하려고합니다. 현재 열려있는 탭을 기반으로 GUI의 크기를 조정하고 싶습니다. uitabpanel.SelectedItem과 함께 사용할 수 있습니다.MATLAB : 변수 변경시 콜백을 수행 하시겠습니까?

기본적으로 uitabpanel.SelectedItem을 모니터링하기 위해 콜백을 작성하고 싶습니다.이 변수가 변경되면 GUI 창의 크기가 적절하게 조정되어야합니다. 일반적으로 변수를 모니터링하고 변수가 값을 변경하면 콜백을 실행하는 방법을 찾고 있습니다.

이것이 가능합니까? 이 일을 어떻게 하죠?

감사합니다.

답변

4

지금 당장 MATLAB이 없지만 속성으로 구현되는 경우 - 코드에서 간략하게 살펴볼 수있는 한 - 사용할 수 있습니다. addlistener 함수를 호출하고 이에 대한 콜백 함수를 제공합니다.

addlistener(hTab,'SelectedItem','PostSet',@(s,e)disp('SelectedItem changed')) 
+0

항상 새로운 것을 배웁니다. 감사! – Jonas

+0

정확히 내가 필요한 것입니다! 'SelectedItem'은 속성이 아니지만 기본 탭 패널은'uipanel' 객체에 불과하며 각 탭의'Visible' 속성을 보면서 제안한 것을 사용할 수 있습니다. 감사!!! –

3

파일 교환에서 uitab에 익숙하지 않습니다. 그러나 내장 된 uitab을 기반으로하는 경우 selectionChangeCallback 또는 selectionChangeFcn 속성 (Matlab 버전에 따라 다름)이 있어야합니다. 이 콜백 속성에 대한 함수를 지정하면 선택 항목이 변경 될 때마다 함수를 실행할 수있는 방법이 있습니다.

그럴 수 없다면 변수 변경을 모니터링하는 다른 방법 (객체를 사용하고 메서드를 설정할 수없는 경우)은 주기적으로 변수 값을 폴링하는 TIMER OBJECT을 사용하는 것입니다.

FEX의 uitab이 uipanel 기반으로하므로 편집, 당신이 찾고있는 콜백은 대부분 ButtonDownFcn입니다. 변경하기 전에 uitab 함수에 의해 사용되지 않았는지 확인하십시오. 그렇지 않으면 해당 함수를 편집 할 수 있습니다.

+0

확실히 OOP를 사용할 수는 있지만 스프레드 크래커를 샌드 블라스팅하는 것과 같은 느낌이 들지만 상당히 단순한 작업이어야한다고 생각합니다. 나는 생각했던 것처럼 간단하지가 않다. uitabpanel()이 uitab()을 기반으로한다고 생각하지 않지만, 확실히 콜백을 시도 할 것입니다. 나는 전자가 후자에 기초한다고 생각하지 않는다. 고마워요! –

+0

uitabpanel()은 uipanel()을 기반으로합니다. 나는 uitab()로 바꿀 수 있다고 가정하지만 솔직히 uitabpanel()은 훨씬 더 예쁘게 보인다. .. –

+0

@ strictlyrude27 : 아, 좋아, 클릭 할 때마다 실행되는'ButtonDownFcn'을보고 싶을 수도있다. uipanel. – Jonas

관련 문제