Programming a GUI in multiple files
4 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
I am creating a GUI programmatically, and it is getting quite large. All the information and examples I have been able to find about programming a GUI puts all the code in one file. Is there any way to split things up into several file?
For example, is there a way to define the components in one file and define the callbacks in a separate file?
0 comentarios
Respuestas (2)
Sean de Wolski
el 10 de Oct. de 2011
I would recommend keeping all of the callbacks in one file. However, you can easily have each callback call another mfile with the necessary information. e.g.
function some_button_callback(src,evt)
% do something with the event and pi
anotherfile(evt,pi);
1 comentario
Walter Roberson
el 10 de Oct. de 2011
I would not especially recommend keeping all of the callbacks in one file: it just adds pointless overhead in my opinion.
Now, adopting a naming convention to clearly indicate a callback file: that can be valuable.
Walter Roberson
el 10 de Oct. de 2011
Yes, go ahead and split up as appropriate.
Things to keep in mind:
1) MATLAB can only locate the first function in a file from outside of the file, unless that first function specifically makes handles to the other functions available. For example, you could code
function callbacks = GUIcallbacks
callbacks = struct('Pushbutton1', @push1Callback, 'Freds_listbox', @fredlistCB);
end
function push1Callback(hObject, evt, handles)
...
end
function fredlistCB(hObject, evt, handles);
...
end
Then the main routine could call GUIcallbacks to get back a structure of function handles, and could set() the appropriate graphic object property to the appropriate handle.
2) Even if you have everything in one file, if you code callbacks as strings instead of as function handles, then those strings are always evaluated in the base workspace. The base workspace will never be able to find a function that is not the first function in the file (not unless you use a mechanism such as in #1)
3) Using one file per routine referenced from outside the file works fine... unless, that is, you want to start using nested functions.
0 comentarios
Ver también
Categorías
Más información sobre Printing and Saving en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!