App Designer keeps telling me to "specify a uiaxes handle as first argument" when the first argument is a uiaxes handle
조회 수: 77 (최근 30일)
이전 댓글 표시
When I push a button I want to create blank axes and then plot data on them. In the push button callback this is part of my code
ax1 = uiaxes(app.PlotsTab, 'Position', [x y w h]);
plot(ax1, app.P2x, app.P2y)
This seems to work as expected however App Designer tells me to "specify UIaxes handle as first argument." I am wondering if I have overlooked something or if my syntax is incorrect. Any information is appreciated. Thanks in advance.
댓글 수: 2
Steven Lord
2017년 9월 20일
Set a breakpoint on that first line of your code then run your code. When you reach that breakpoint, before that line that tries to create the uiaxes runs, execute this command and show what it returns.
class(app.PlotsTab)
채택된 답변
Chris Portal
2017년 9월 23일
Tyler, it sounds like the code is executing properly, but the message you're referring to is not a run-time error, but instead a programming alert popping up inside the editor. If this is the case, you can safely ignore the alert.
It is interpreting your syntax as being incorrect because it expects the first argument to PLOT to be of the form:
app.YourAxesComponent
This is because in the vast majority of use cases, an axes handle needs to be stored as part of the app so it can be easily accessed later within a callback. In your specific case, you can store the UIAxes handle in your app by creating a property and setting it to the UIAxes handle upon creating it. To access it, you would need to specify app., which is analogous to doing handle. in the GUIDE world. (Since app. was a common programming oversight, the alert was added to catch the issue early for users.)
If you prefer to not store the UIAxes handle as part of your app, you can avoid seeing the alert by disabling the "Enable app coding alerts" checkbox in the Editor tab. This however will hide all alerts, so take that into consideration.
댓글 수: 3
David K
2021년 9월 7일
Is there a way to suppress these warnings in appDesigner using the %#<ID> notation? If so, how do I determine what the correct Message ID is?
Deming Zhang
2022년 1월 10일
I have the same problem. The method of using "app.ax" does not work for me. It keeps warning me to specify an uiaxes handle as the first argument:
hfg = uifigure();
hfg.AutoResizeChildren = 'off';
app.ax1 = subplot(2,1,1,'Parent', hfg);
plot(app.ax1, t, h);
I am using R2019b.
추가 답변 (1개)
Marion Gebhard
2019년 7월 8일
I still have the warning. what is wrong with the code
properties (Access = public)
% für Plots die Achsen name als Property definieren
ax;
ax1;
ax2;
end
p1fig=uifigure('Name','plot1','Color','white');
p1fig.ToolBar='none';
p1fig.MenuBar='none';
app.ax=uiaxes(p1fig,'XLim',[x_min_axis,x_max_axis],'YLim', [y_min_axis,y_max_axis],'XGrid','on',"YGrid","on");
app.ax.Interactions=[];
app.ax.Toolbar.Visible='off';
app.ax.Title.String=app.DIA1_TXT(1,1);
app.ax.XLabel.String=app.DIA1_TXT(1,2);
app.ax.YLabel.String=app.DIA1_TXT(1,3);
% call Plot
plot(app.ax,rt_ScopeData1(:,1), rt_ScopeData1(:,2:size(rt_ScopeData1,2)),'-','LineWidth',2);
legend(app.ax,app.LTEXT1, 'Location','southeast');
In the plot and Legend command there still comes the warning
"Specify a UIAxes handle as first argument"
Iwould like to undrerstand why this warning still comes.
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Develop Apps Using App Designer에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!