2014-10-06 1 views
0

MATLAB GUIDE에서 계산 소프트웨어를 구축했습니다. 내가하고 싶은 일은 다른 편집 필드와 일부 드롭 다운에서 모든 계산 데이터를 채우는 것입니다. 그리고 내가 계산을 누르면 "목록 상자"에 텍스트 "계산 1"이 채워 져야합니다.여러 GUI 데이터 세트를 목록 상자에 저장하고 MATLAB에서 다시로드하십시오.

그때 입력 필드와 언론의 일부에서 일부 데이터를 변경하면 계산을 다시 나는 등 "1 계산"아래 "계산 2"로 목록 상자를 채우려 ...

하지만 내가 원하는 것 목록 상자에서 "계산 1"을 다시 강조하고 "입력 매개 변수로드"버튼을 눌러 모든 편집 입력 필드에 "계산 1"을 계산할 때 사용 된 데이터를 채 웁니다.

나는이 모든 곳을 보았지만 아무 것도 찾을 수 없습니다.

// 로빈

답변

1

다음은 매우 기본적인 몇 가지 코드로 당신이 찾고있는 것을 수행합니다. 가능한 많은 개조가 있지만 나는 그들과 함께 놀 수있게 할 것입니다. 나는 설명으로 설명을 넣는다. 과거를 MATLAB으로 복사하고 원하는대로 GUI를 변경할 수 있습니다.

물론

enter image description here

당신이 훨씬 더 복잡 할 수 있지만, 이것은 시작하는 데 도움이 및 다른 콜백이 함께 작동하는 방식을 이해해야합니다

function CalculatorGUI 

% Dummy GUI to calculate A*B + C... 
clc 
clear 
close all 

global hTestResult hEditA hEditB hEditC CalculationList CalculationStrings 

% Set up controls 
CalculationList = nan(10,3); % Create array in which we store the parameters. 1st column is A, 2nd is B and 3rd is C. 
CalculationStrings = cell(10,1); 

ScreenSize = get(0,'ScreenSize'); 

hFig = figure('Visible','off','Position',[ScreenSize(3)/2,ScreenSize(4)/2,450,285]); 

hCalculateButton = uicontrol('Style','Pushbutton','Position',[350,150,80,30],'String','Calculate!','Callback',@CalculateCallback); 

hTitle = uicontrol('Style','Text','Position',[100,250,100,25],'String','Calculate (A * B) + C'); 

hTextA = uicontrol('Style','Text','Position',[125,220,70,25],'String','A'); 
hEditA = uicontrol('Style','Edit','Position',[125,200,70,25],'String','1'); 

hTextB = uicontrol('Style','Text','Position',[200,220,70,25],'String','B'); 
hEditB = uicontrol('Style','Edit','Position',[200,200,70,25],'String','2'); 

hTextC = uicontrol('Style','Text','Position',[275,220,70,25],'String','C'); 
hEditC = uicontrol('Style','Edit','Position',[275,200,70,25],'String','3'); 

hResultHeader = uicontrol('Style','Text','Position',[350,220,70,25],'String','Result'); 
hTestResult = uicontrol('Style','Text','Position',[350,200,70,25],'String',''); 


hTextCalcu = uicontrol('Style','Text','Position',[100,140,100,50],'String','Calculations'); 
hListCalcu = uicontrol('Style','Listbox','String','','Position',[100,120,200,50],'max',10,... 
    'min',1,'Callback',@ListBox_Callback); 

set(hFig,'Visible','on') 
%====================================================================== 
%====================================================================== 

% Callback of the pushbutton 
    function CalculateCallback(~,~) 

     % Get the values in the edit boxes. There is no ckechup to make 
     % sure the user entered a correct value... 
     A = str2double(get(hEditA,'String')); 
     B = str2double(get(hEditB,'String')); 
     C = str2double(get(hEditC,'String')); 

     Calculation = A*B+C; 

     % Display the result. 
     set(hTestResult,'String',sprintf('The result is %0.2f',Calculation));   

     % Find how many calculations have been performed and append the 
     % parameters to the current list 

     [x,~] = find(~isnan(CalculationList)); 
     CurrentCalc = numel(unique(x)); % Get number of rows which are NOT NaNs. 

     CurrentValues = [A B C]; 


     CalculationList(CurrentCalc+1,:) = CurrentValues; 
     CurrentString = sprintf('A = %0.2f B = %0.2f C = %0.2f',A,B,C); 

     % Assign the parameters to the cell array. 
     CalculationStrings(CurrentCalc+1) = {CurrentString}; 
     set(hListCalcu,'String',CalculationStrings) 

    end 

% Listbox callback: When the selection changes, the corresponding 
% parameters in the edit boxes change. 

    function ListBox_Callback(~,~) 

     SelectedCalc = get(hListCalcu,'Value'); 

     CalculationList(SelectedCalc,1) 
     CalculationList(SelectedCalc,2) 
     CalculationList(SelectedCalc,3) 

     set(hEditA,'String',CalculationList(SelectedCalc,1)); 
     set(hEditB,'String',CalculationList(SelectedCalc,2)); 
     set(hEditC,'String',CalculationList(SelectedCalc,3)); 
    end 

end 

실제 인터페이스는 다음과 같습니다. 재미있어!

+0

고마워요! 나는 그것을 시험해 볼 것이고 나는 그것이 작동하는지 알 수있다. =) – Robin

+0

ok 나는 당신의 피드백을 기다릴 것이다. –

+0

그래서 작동 했습니까? –