How to deal with gui's and handles in .m
Show older comments
Basically from a gui i run with a function a .m file that contains a for cycle. Let's suppose that this cycle has 2 iterations. At the end of the first iteration i'd like to display in the gui the percentual of the routine, therefore have an output in the gui.
This is the part of the code that i have at the end of the for cycle in the .m file of the function
compl=(index/num_repetitions)*100;
assignin('base','compl',compl)
compl = evalin('base', 'compl');
handles=guidata(handles.percentual);
set(handles.percentual,'String',compl);
While this is the error i obtain
??? Undefined function or variable "handles".
Error in ==> sim_main_part2 at 138 handles=guidata(handles.percentual);
Error in ==> GUI>simulate_Callback at 237 [y]=sim_main_part2(ll, dz, stDdz, z, teta, Const_x, Const_y, PixScale, num_repetitions);
What should i do to make it work? Thank you for any help
Answers (2)
Doug Hull
on 11 Nov 2013
This line of code does not make much sense
handles=guidata(handles.percentual);
It is unclear what it should be out of context, but watch the video and you should be fine.
1 Comment
Image Analyst
on 11 Nov 2013
You called sim_main_part2() but didn't pass in handles. Since it's not a GUIDE-generated callback, it does not automatically have handles in the private, local workspace of the sim_main_part2() function. If you want to use handles in that function, you will have to pass it in, and list it as an argument in the function declaration line:
function y = sim_main_part2(handles, ll, dz, stDdz, z, teta, Const_x, Const_y, PixScale, num_repetitions)
% Code goes here...
If you change handles, you can pass it out also:
function [handles, y] = sim_main_part2(handles, ll, dz, stDdz, z, teta, Const_x, Const_y, PixScale, num_repetitions)
% Code goes here...
15 Comments
Michele
on 11 Nov 2013
Image Analyst
on 12 Nov 2013
It does work but you must have done something wrong. If your code is in the comment to Doug, the wrong part is that when you called sim_main_part2(), you did not pass in handles. You need to declare it like I said then call it passing in handles (also like I said):
[handles, y] = sim_main_part2(handles, ll, dz, stDdz, z, teta, Const_x, Const_y, PixScale, num_repetitions);
The above is how you CALL it, not how you declare it which I already told you how to do in my first reply.
Image Analyst
on 12 Nov 2013
It does work but you must have done something wrong. If your code is in the comment to Doug, the wrong part is that when you called sim_main_part2(), you did not pass in handles. You need to declare it like I said then call it passing in handles (also like I said):
[handles, y] = sim_main_part2(handles, ll, dz, stDdz, z, teta, Const_x, Const_y, PixScale, num_repetitions);
The above is how you CALL it, not how you declare it which I already told you how to do in my first reply.
Michele
on 12 Nov 2013
Image Analyst
on 12 Nov 2013
Sometimes if number crunching is happening too rapidly it won't update guis. In that case put a drawnow call right after you want the gui to update/refresh/repaint and it will force it to be current.
Image Analyst
on 12 Nov 2013
What is the point of
assignin('base','compl',compl)
compl = evalin('base', 'compl');
?? It is not needed at all.
Michele
on 12 Nov 2013
Image Analyst
on 12 Nov 2013
What data are you trying to refresh? handles.percentual? Is it an edit text or a static text? Are you sure compl is changing each time? Does it update if you step through it a line at a time in the debugger?
Image Analyst
on 12 Nov 2013
Then the code should work. I don't know what else to do unless you upload your files.
Michele
on 13 Nov 2013
Image Analyst
on 13 Nov 2013
Well I guess you're totally and completely out of luck, since it looks like you've stopped trying to solve it, or else you chose not to upload your files for some other reason (such as they're secret/proprietary).
Michele
on 18 Nov 2013
Image Analyst
on 18 Nov 2013
You can attach files here. I don't take files via email. But I give no guarantee that I'll have time to look at them.
Categories
Find more on Annotations in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!