set()
オブジェクト指向の GUI プログラムを作成していますが、関数を使用して GUI 要素のプロパティを変更しようとすると問題が発生します。ボタンの有効化プロパティをオフからオンに変更しようとしているだけです。以下に同じ問題を示す要約コードを添付しました。matlab がクラスなどを処理する方法はかなり奇妙に感じられるため、問題は単に私のシステムの誤解が原因である可能性があります。set()
とにかく、 で関数を使用しようとすると、関数でhandle AD.buttonExit
コマンドを実行すると期待どおりに動作しinitUI()
ます。別の関数で同じことをしようとすると、失敗します。の内容を印刷するだけでスタックを確認しましたAD
。initUI
関数では、ハンドル値を明確に示していますbuttonExit
、コンストラクター関数(または他のクラスメンバー関数)にはありません。私は初歩的な間違いを犯しているように感じますが、それはわかりません。誰かが私を助けてくれることを願っています.
-- rfigler
コード (わかりやすくするために省略):
classdef test
properties
AppUI;
buttonExit;
end
methods
function AD = test()
%draws UI
AD.initUI();
set(AD.buttonExit, 'Enable', 'on')
AD.test2()
end
function initUI(AD)
AD.AppUI = figure('Visible','off','Position',[520,321,695,482], 'MenuBar', 'none', 'Name', '3D Particle Tracking',...
'NumberTitle', 'off', 'Resize', 'off', 'Color', [0.94,0.94,0.94]);
AD.buttonExit = uicontrol('Enable', 'off', 'Style', 'pushbutton', 'Visible', 'on', 'Position', [35,29,181,31], 'String', 'Exit');
set(AD.AppUI, 'Visible', 'on');
%1 set(AD.buttonExit, 'Enable', 'on')
end
function test2(AD)
set(AD.buttonExit, 'Enable', 'on')
end
end
end