簡體   English   中英

Matlab GUI。 在另一個.m文件中設置按鈕句柄

[英]Matlab GUI. Set pushbutton handles in another .m file

我有一個很大的Matlab代碼,現在我正在嘗試將其連接到GUI。 我創建了一個函數

function z = interface_master(handles)

首先從GUI文本編輯框獲取初始參數,然后使用這些參數運行多個.m文件,例如

n = get(handles.n_value,'String');
n = str2num(n);
assign('base','n',n)
run('code_1')
run('code_2')
...

在此“代碼”中,我創建並保存了許多數字。 我現在希望用戶能夠在GUI中顯示他選擇的圖形。 可以說我將有3個不同的按鈕(Push1,Push2,Push3),並且在用戶按下Push1后將顯示Figure_A。 然后,在按下Push2之后,他將得到Figure_B替換Figure_A,依此類推。 我能以某種方式使其工作僅在我的函數interface_master設置句柄嗎?

我不想讓我的interface.m文件過於擁擠,到目前為止,我僅通過接口回調函數中的兩個interface_master(handles)連接,就設法在此附加的interface_master文件中進行了其他所有操作(讀取值,顯示消息)。 但是現在我被這些按鈕所困擾。

我非常感謝您的幫助。 我以前從未做過GUI。

我已經創建了一個非常簡化的版本。 通常,code_1和code_2更大,並且界面將顯示更多消息,而code_1和code_2保存大約20個不同的數字。 但是,我正在苦苦掙扎的事情可以通過一個簡單的計算多項式的代碼來證明。

%% code_1.m 
x = linspace(-1,1) ;
y = x.^n ;


%% code_2.m
f = figure('visible','off');
plot(x,y);
set(f,'Visible','on')
saveas(f,'power_plot_1','fig')
delete(f)
g = figure('visible','off');
plot(x,x.^(n+1));
set(f,'Visible','on')
saveas(g,'power_plot_2','fig')
delete(g)

%%% master.m
function z = master(handles)

n = get(handles.n_value,'String')
n = str2num(n) ;
assignin('base','n',n)

if (n < 1) 
   message = ('small n') ;
elseif (n>10)
    message = ('large n') ;
else
message=('hello world') ;

run('code_1') 
run('code_2')

end
set(handles.text1,'String',message)

這是接口:

https://lh3.googleusercontent.com/-5zoGVwgJhoM/V1qdiyd667I/AAAAAAAACQ0/oaTQHYn13gIuLoSb42Q7N66AV102e-VjQCCo/s912/inter.png

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM