基于 MATLAB 示例,我添加了一個close命令,以便uifigure在按下 OK 按鈕后關閉。但是,在其當前狀態下,圖形會自動關閉,而不是單擊按鈕。如何更改以下內容以使該圖在單擊時關閉?
代碼:
fig = uifigure;
message = {'Fire hazard!','Consider reducing temperature.'};
uialert(fig,message,'Warning',...
'Icon','warning');
close(fig)
uj5u.com熱心網友回復:
您應該在以下位置使用回呼uialert:
fig = uifigure;
message = {'Fire hazard!','Consider reducing temperature.'};
uialert(fig, message, 'Warning', 'Icon', 'warning', ...
'CloseFcn', @(~, ~)close(fig)); % This will be executed after Ok is pressed
語法@是 Matlab 定義匿名函式的方式(Matlab 呼叫這些函式句柄,其他語言通常呼叫這些 lambdas)。它允許將函式作為引數傳遞給其他函式。如果你的匿名函式需要接收引數,@(p1, p2, p3)可以使用語法。
在回呼的情況下,uifigures回呼總是需要兩個引數:fig和event。fig是事件發生的圖形,event是描述事件的結構。在上述情況下,由于您要做的只是關閉圖形(并且您已經知道要關閉哪個圖形),您可以忽略這兩個引數。Matlab 中用于告訴您正在接收有意忽略的引數的語法是在~引數的位置使用波浪號 ( )。這實際上可以在任何地方使用,包括在普通函式的定義中或在解包回傳值時。例如:
[U,~,V] = svd(A)
表示您對 SVD 的奇異值不感興趣,只對左右奇異向量感興趣。
您可以在Matlab 檔案中閱讀有關函式句柄的更多資訊。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/440848.html
