How can I find an uifigure?

조회 수: 81 (최근 30일)
Clovis Bonavides
Clovis Bonavides 2020년 1월 25일
댓글: Adam Danz 2020년 1월 28일
I am mixing some old GUIs designed with GUIDE with uifigures, so I can use the uitree object (and some others).
However, when I try to establish communication between some functions in my GUIs (need to click on an ax and then assign some value from a tree node and insert into a table) I cannot find the uifigure - neither using "findobj ('Type', 'figure')" nor using "findall (groot)". Before I started this design I did not even consider this possibility, thought it would be something quite simple - which it probably is but I cannot get past this point.
Would really appreciate any answer or a possible solution to this issue.
  댓글 수: 6
Clovis Bonavides
Clovis Bonavides 2020년 1월 26일
Walter - thanks! But I get this err msg:
" Error using appwindowfactory
Functionality not supported with figures created with the uifigure function. For more information, see
Graphics Support in App Designer. "
Problem is that right now I must use figures as I am adapting some existing code and must try to avoid opening a new window as much as possible. Cannot use the appdesigner in this case without adding some substantial amount of work...
Adam Danz
Adam Danz 2020년 1월 26일
편집: Adam Danz 2020년 1월 26일
In r2019b the handlevisibility property of uifigures can only be set to off.
When it's set to "on" you get a "functionality not supported" error. Maybe that will change in 2020a.

댓글을 달려면 로그인하십시오.

채택된 답변

Adam Danz
Adam Danz 2020년 1월 26일
편집: Adam Danz 2020년 1월 27일
You can find the uifigure handle using findall() but it's not recommended to merely find handles to all figures because it's quite likely that at some point other figures will exist other than your GUI.
To find the handle to your GUI figure, add a long, descriptive, unique name to the tag property of your GUI. Then specify that unique tag name when searching for the GUI handle.
uif = uifigure('Tag','MyUniqueTag'); % a demo ui-figure with a unique tag name
h = findall(0,'Type','figure','tag','MyUniqueTag') % Get the handle.
To search for all figures (hidden or not)
h = findall(0,'Type','figure');

추가 답변 (2개)

Walter Roberson
Walter Roberson 2020년 1월 26일
If you create the uifigure with HandleVisibility, 'on', then you can
findobj(groot, 'type', 'figure')
otherwise you need findall() because the handle visibility for uifigure defaults to 'off'

Clovis Bonavides
Clovis Bonavides 2020년 1월 28일
None of the solutions proposed up to this point does work. The visibility of the uifigure created programmatically cannot be set to ON - which is probably a bug. Hopefully this will be fixed in the next coming version. Anyway, many thanks to all those who tried to help me. I actually got around by working creating a new window with the uifigure (tree), something I much wanted to avoid.
  댓글 수: 3
Adam Danz
Adam Danz 2020년 1월 28일
편집: Adam Danz 2020년 1월 28일
Clovis Bonavides's answer moved here as a comment
Adam, you are absolutely correct. It DOES work in vers 2019.b, which I just got loaded.
In vers 2018b it doesn't work as the uifigure's handle visibility is "hardwired" to "OFF" and cannot be changed through the uifigure generation code.
Thanks!
Adam Danz
Adam Danz 2020년 1월 28일
On the right hand column of this page you can see the Product and Release fields where you entered r2019b. This is very helpful info and most people don't fill it out (so, thank you!).
BTW, I just tested the lines in my comment above in r2018b and it also works there, too. Maybe something was copied wrong when you were trying it out.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Develop uifigure-Based Apps에 대해 자세히 알아보기

제품


릴리스

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by