- run the gui by name, recording the figure handle returned. It is possible that the gui does not return until you quit the gui: if so then that complicates matters, potentially even too much for this general strategy to be used, but other times just a durned nuisance.
- assuming that the figure handle was returned, use findall() on it with the identifying information determined earlier, probably the Tag, to get the handle to the button object
- when it is time to "click" the button, first set the Value property of the button to 1
- then call GUINAME('FUNCTIONNAME', buttonhandle, [], handles(buttonhandle)) where GUINAME and FUNCTIONNANE are copied from your investigation
- then set the button handle Value back to 0
How can I click a button in a .fig from a script or function?
7 次查看(过去 30 天)
显示 更早的评论
Hello everybody,
I was searching for a way to click on a button in a .fig with the mouse from an external script (this because I only have the .p versione of the code... ). I fond on prevoius topics these commands:
import java.awt.Robot;
import java.awt.event.*;
robot = Robot();
robot.delay(2000);
robot.mouseMove(600,600);
...but this seems not to work on my Mac (matlabR2020), I also tried from MatlabOnline on a Windows PC.
So I was wondering if there is an alternative method for "pressing" a button of a .fig from an external script.
Can you please help me with this problem?
Thank you so much!
0 个评论
回答(1 个)
Walter Roberson
2021-3-9
You can openfig() the fig file and assign the result (figure number) to a variable, and
findall(FigureNumber, 'type', 'uicontrol', 'style', 'pushbutton')
This will return handles to all of the pushbuttons. You can then examine their properties such as String to locate the one you want. That handle will have a callback property that will contain an anonymous function in which you will be able to see the function being invoked. It will look something like
@(hObject, event) GUINAME('FUNCTIONNAME', hObject, event, handles(gcbo))
You need the gui name and function name from that, and you need unique identifying information about the button, with it being quite likely that the button Tag will be unique.
Now, the process of "clicking" the button is:
The exact sequence of steps I give here would need to be modified if the gui is sufficiently old that the Callback was not an anonymous function and was instead a character vector
If the gui does not return until it is quit then you have a challenge on your hands of needing to initialize the gui without calling the OpenFcn callback. The OpenFcn could potentially be spring loaded to set variables in ways that could be detected by the code to validate that regular initialization was done, if the gui went to enough trouble.
另请参阅
类别
在 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!