2016-07-26 1 views
0

GUIDE로 작성된 광범위한 Matlab 기반 GUI에서 작업하고 있습니다. 핸들 구조의 자체 포함 된 복사본을 효율적으로 만드는 것은 일반적으로 불가능하기 때문에 GUI의 전체 상태를 저장하는 것은 힘든 작업으로 보입니다. 웹 검색에서 수집 한 내용을 바탕으로 현재 구조는 수동으로 새로운 구조를 만들고 적절하게 명명 된 필드에 GUI의 모든 uicontrols의 필요한 속성을 저장하는 것입니다. 예를 들어 GUI에 uitable이있는 경우 uitable에서 Data을 저장하는 tabledata이라는 필드를 새 구조에 포함하고자 할 수 있습니다. 그런 다음이 새로운 구조를 .mat 파일에 저장하고이 파일을 읽고 수동으로 필드를 복사하는 역 동작을 통해 GUI의 상태를 다시로드합니다.MATLAB : GUI에서 사용자가 조절할 수있는 속성 개요 얻기

대용량 GUI의 경우 매우 힘들 기 때문에 위의 해결 방법을 해결책 대신 호출했습니다. 누구든지이 방법을 더 빠르고/더 짧게/더 깔끔하게하는 방법을 가지고 있다면 언제든지 공유하십시오! 나는 더 짧고, 좀 더 깨끗한 방법으로 몇 가지 관점에서 생각해 냈지만, 나는 여전히 위의 해결 방법을 선호할만한 몇 가지 이유가있다. 어쨌든 내 질문은 그 해결 방법에 관한 것입니다.

가장 큰 문제점은 저장 및로드 코드가 포괄적이어야한다는 것입니다. 사용자가 조정할 수있는 모든 값과 속성은 새로 생성 된 구조에 저장해야합니다. 큰 GUI의 경우 수동으로 모든 항목을 검사하여 어떤 값과 속성을 조정할 수 있는지를 아는 것은 불가능합니다. 특히 하나의 속성이 다른 하나 이상의 속성에 영향을 줄 수있는 uicontrol이있는 경우 uicontrols. 그래서 내 질문은 : 거기에 사용자가 주어진 GUI에 영향을 미칠 수있는 모든 값과 속성의 개요를 얻을 수 있습니까?

+0

['savefig'] (http://www.mathworks.com/help/matlab/ref/savefig.html)는 전체 그림 창을 스냅 샷하려는 경우. – excaza

+0

@excaza 저장 및로드 기능을 구현하는 동안 GUI의 상태를 저장하거나 보조/알림으로 저장하는 다른 방법으로 사용 하시겠습니까? A : 그게 제가 생각한 것입니다 만, 이것은 꽤 느린 로딩을 가능하게하고, 전체 GUI 자체를 저장하는 것처럼 GUI의 상태를 많이 저장하지 않기 때문에 역 호환이되지 않습니다. 이전 버전의 GUI에 저장 한 상태를로드하면 이전 버전도 다시 나타납니다. B : 실제 개요와 같은 것을 기대하고 있다면. 사용자가 액세스 할 수있는 GUI 특성 목록. – Wouter

+0

['get'] (http://www.mathworks.com/help/matlab/ref/get.html)는 그래픽 개체의 모든 속성과 속성 값을 구조체에 반환합니다. – excaza

답변

-1

Yair Altman이 코딩 한 uiinspect이라는 함수를 살펴보십시오. 모든 메소드, 콜백 및 속성 목록을 생성합니다.

기능 작동 방법에 대한 전체 설명은 here입니다.

Screenshot Below