Can the start button of a GUI be pressed automatically?
2 次查看(过去 30 天)
显示 更早的评论
I have a matlab routine that runs a simulation that takes a long time (sometimes many hours). After starting the simulation, I can't use the command window for anything else until the simulation is complete because the simulation does not return to the command prompt until it is done. Sometimes I would start another instance of Matlab running so I could run other Matlab programs while the simulation is running. However, I prefer to have only one instance of Matlab running, so I modified the simulation so that it included a gui with a start button. The call back of the start button starts the simulation. This way, the simulation returns to the command prompt so I can enter other matlab commands while the simulation is running. Although this works well, I was wondering if there was any way the start button could be activated automatically as soon as the program was started. That would be more convenient. Also, at least once, I was dissappointed to find that after coming back several hours later it hadn't made any progress because I had forgotten to press the damn start button.
3 个评论
回答(2 个)
Walter Roberson
2021-2-15
In that release, you would have been using GUIDE .
In the main .m file, there would be an OpenFcn callback. You will know it is the right one because it will probably have a commented out call to uiwait() or waitfor() .
The OpenFcn callback is invoked after the figure has been completely loaded and the handles structure has been created. It will be invoked automatically when you start the GUI by name or by double-clicking on the .m file for the GUI (do not double-click on the .fig file -- that does not initialize the code properly.)
You can alter the OpenFcn callback to put in a call to the function that does the actual work.
However, if you put in a direct call, and the function goes off and does the work, then the function is not going to return and you will not get back to the command line.
The work-around for that is to have the OpenFcn callback create a timer that invokes the function. Timers run in the background, so you should be able to use the command line.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Interactive Control and Callbacks 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!