WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

GUI ändert Position bei einlesen von Handles

 

NicoPdm
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 25.02.15
Wohnort: Potsdam
Version: ---
     Beitrag Verfasst am: 02.03.2015, 09:57     Titel: GUI ändert Position bei einlesen von Handles
  Antworten mit Zitat      
Hallo Leute,
ich habe folgendes Problem: ich habe ein GUI und ein Skript, das über
Code:
handles = guidata(Mein_GUI);
die Handles einliest und dann damit arbeitet.
Nun habe ich bei einem Pushbutton im Callback zu stehen, dass er dieses Skript ausführen soll. Immer wenn ich dann diesen Knopf drücke, verschiebt sich das GUI (das daraufhin Plots ausgibt) auf immer die gleiche Position, wo ich es nicht haben will.

Meine Frage ist: gibt es einen Befehl, der dem GUI sagt, dass es fixiert bleiben soll, wo es grad ist? Also nicht über "bleibe an Koordinate x und y", sondern einfach da, wo es sich im Moment des Klicks auf den Button befindet?
Oder kann ich das mit den Handles anders formulieren, falls das Problem dort liegt?

Viele Grüße und danke schön im Voraus
Nico
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 02.03.2015, 17:06     Titel: Re: GUI ändert Position bei einlesen von Handles
  Antworten mit Zitat      
Hallo NicoPdm,

Effizienter ist es den Code zu entfernen, der das Verschieben des GUIs verursacht.
Setze einen Breakpoint mit dem Debugger und gehe zeilenweise durch den Code, bis Du die Zeile findest, die die Position ändert. Du könntest auch mal nach 'Position' im Code suchen.

Das GUI verschiebt sich nicht einfach aus einer Laune heraus und man muss ihm das nicht abgewöhnen. Matlab macht wirklich nur das, was man ihm explizit befiehlt.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
NicoPdm
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 25.02.15
Wohnort: Potsdam
Version: ---
     Beitrag Verfasst am: 03.03.2015, 09:57     Titel:
  Antworten mit Zitat      
Hallo Jan,
danke für die Antwort erstmal.

Also es klappt alles wunderbar, bis ich über den oben schon genannten Code die Handles einlese. Ich habe es jetzt mit Breakpoints gemacht, und genau ab dieser Zeile verschiebt sich das gesamte GUI-Fenster einfach.

Hat es was damit zu tun, dass ich auf zwei Monitoren arbeite? Da das Fenster sich aber unabhängig davon, auf welchem Monitor es sich zum Moment des Klickens befindet, immer auf die gleiche Stelle auf meinem linken Monitor verschoben wird, kann ich das bald nicht glauben. Auf welchem Monitor sich das MATLAB Command Window befindet, scheint auch keine Rolle zu spielen. Confused

Aufgerufen wird das Skript im Callback einfach, indem ich dort den Namen des Skripts eingetragen habe.

Viele Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 04.03.2015, 10:49     Titel:
  Antworten mit Zitat      
Hallo NicoPdm,

Zitat:
Also es klappt alles wunderbar, bis ich über den oben schon genannten Code die Handles einlese. Ich habe es jetzt mit Breakpoints gemacht, und genau ab dieser Zeile verschiebt sich das gesamte GUI-Fenster einfach.

Verstehe ich es richtig, dass sich vor dieser Zeile das Fenster nicht bewegt hat und nach dieser Zeile steht es an einer anderen Position:
Code:
handles = guidata(Mein_GUI);

In dem Fall wäre es wichtig zu wissen, was denn "Mein_GUI" ist. Ist das vielleicht der Name des M-Files, das das GUI definiert? Dann würde eine Menge Code aufgerufen, der wohl irgendwo die Position setzt. Das würdest Du heraus finden, in dem Du nicht über diese Zeile hinwegspringst mit dem Debugger, sondern in die aufgerufene Funktion hinein. (Das ist der Button rechts daneben, wenn ich mich richtig erinnere.)

GUIDATA benötigt eigentlich nur den Handle des Fensters. Statt also die Funktion aufzurufen wäre es viel praktischer den Handle direkt zu bestimmen.

Zitat:
Hat es was damit zu tun, dass ich auf zwei Monitoren arbeite?

Nein. Hier zu raten ist ein prinzipieller Fehler. Es steckt wirklich nichts magisches in Matlab. Da gibt es keine unheimlichen Fernwirkungen irgendwelcher Monitor-Anzahlen oder ähnliches.
Die Fenster-Position wird wirklich nur dann geändert, wenn irgendwo explizit die 'Position'-Eigenschaft neu gesetzt wird. Und wenn Du noch nicht gefunden hast, wo das genau geschieht, hast Du noch nicht die richtige Stelle gefunden. Dann hilft nur genauer suchen.

Zitat:
Aufgerufen wird das Skript im Callback einfach, indem ich dort den Namen des Skripts eingetragen habe.

Was bedeutet das genau? Wieso hast Du wo den Namen welches Scripts eingetragen? Meinst Du "Funktion" statt "Script"? Das ist ein wichtiger Unterschied in Matlab.
Wenn Du hier "Mein_GUI" meinst, liegt das Problem genau dort. Nutze also den Debugger um heraus zu finden, wo genau in "Mein_GUI.m" die Position neu gesetzt wird. Ändere die Zeile dort oder verwende den Handle des GUIs statt des Namens der Funktion. Sie z.B. FINDOBJ um einen Handle zu finden, falls Du ihn nicht vorher direkt speichern kannst.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
NicoPdm
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 25.02.15
Wohnort: Potsdam
Version: ---
     Beitrag Verfasst am: 04.03.2015, 11:49     Titel:
  Antworten mit Zitat      
Hallo Jan, vielen Dank für deine Mühe. Ich bin, wie man vielleicht merkt, totaler Anfänger, ich hoffe, ich bringe dich nicht komplett zur Weißglut. Wink
Zitat:
Verstehe ich es richtig, dass sich vor dieser Zeile das Fenster nicht bewegt hat und nach dieser Zeile steht es an einer anderen Position

genau so ist es.
Zitat:
In dem Fall wäre es wichtig zu wissen, was denn "Mein_GUI" ist. Ist das vielleicht der Name des M-Files, das das GUI definiert?

Genau, mein GUI-File heißt in dem Fall "world3_gui".

Über den Debugger habe ich jetzt einen Breakpoint gesetzt an der Zeile
Code:
handles = guidata(world3_gui);
(Diese Zeile steht in dem .m_file "world3_gui_sim.m", siehe weiter unten)
Danach komme ich über "Step In" (der eine Knopf rechts daneben" in die Funktion
Code:
function varargout = world3_gui(varargin)
% WORLD3_GUI MATLAB code for world3_gui.fig
%      WORLD3_GUI, by itself, creates a new WORLD3_GUI or raises the existing
%      singleton*.
%
%      H = WORLD3_GUI returns the handle to a new WORLD3_GUI or the handle to
%      the existing singleton*.
%
%      WORLD3_GUI('CALLBACK',hObject,eventData,handles,...) calls the local
%      function named CALLBACK in WORLD3_GUI.M with the given input arguments.
%
%      WORLD3_GUI('Property','Value',...) creates a new WORLD3_GUI or raises the
%      existing singleton*.  Starting from the left, property value pairs are
%      applied to the GUI before world3_gui_OpeningFcn gets called.  An
%      unrecognized property name or invalid value makes property application
%      stop.  All inputs are passed to world3_gui_OpeningFcn via varargin.
%
%      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
%      instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help world3_gui

% Last Modified by GUIDE v2.5 27-Feb-2015 11:48:54

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @world3_gui_OpeningFcn, ...
                   'gui_OutputFcn',  @world3_gui_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT

Wenn ich von dort aus immer schrittweise "Step" klicke, verschiebt sich das Fenster, sobald ich diese Zeile ausführe.
Code:
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});


Zitat:
Die Fenster-Position wird wirklich nur dann geändert, wenn irgendwo explizit die 'Position'-Eigenschaft neu gesetzt wird. Und wenn Du noch nicht gefunden hast, wo das genau geschieht, hast Du noch nicht die richtige Stelle gefunden. Dann hilft nur genauer suchen.


Über das Suchen-Tool habe ich nichts gefunden, wo Position steht, weder klein noch groß geschrieben. Wie kann ich mir da noch helfen?

Grad eben habe ich bemerkt, dass wenn ich über GUIDE in den GUI-Options den Haken bei "GUI allows only one instance to run (singleton)" entferne, er das GUI nicht verschiebt, er aber an der gleichen Stelle, an die er das GUI sonst verschiebt, ein zweites GUI öffnet, das aber nicht das tut, was es soll - plotten. Kann es sein, dass er das GUI also quasi nicht verschiebt, sondern einfach das alte schließt und ein neues öffnet? Wenn ja, wie verhindere ich das?

Zitat:
Zitat:
Aufgerufen wird das Skript im Callback einfach, indem ich dort den Namen des Skripts eingetragen habe.

Was bedeutet das genau? Wieso hast Du wo den Namen welches Scripts eingetragen?

Ich habe ein Skript, "world3_gui_sim.m", das die Funktion erfüllt, die vom GUI erhaltenen Variablen aus den Handles (durch
Code:
handles = guidata(world3_gui);
) über assignin in den Workspace zu laden. Danach startet es eine Simulink-Simulation und plottet einige Ergebnisgraphen dieser Simulation zurück auf mein GUI in drei verschiedene Axes.
Dieses Skript wird vom GUI aus über einen Pushbutton aufgerufen, nachdem ich entweder über ein Popup-Menü oder alternativ über Edit-Felder und einen Einlesen-Knopf bestimmte Werte in die Handles eingetragen habe.
Zitat:
Wenn Du hier "Mein_GUI" meinst, liegt das Problem genau dort. Nutze also den Debugger um heraus zu finden, wo genau in "Mein_GUI.m" die Position neu gesetzt wird. Ändere die Zeile dort oder verwende den Handle des GUIs statt des Namens der Funktion. Sie z.B. FINDOBJ um einen Handle zu finden, falls Du ihn nicht vorher direkt speichern kannst.

Dem kann ich leider nicht so ganz folgen. Embarassed Also im GUI-.m-File kann ich wie gesagt nichts mit "Position" finden. Und das mit dem Handle des GUIs statt des Namens der Funktion verstehe ich leider gar nicht. Sad

Nochmals Dankeschön für deine Hilfe, VG
Nico
Private Nachricht senden Benutzer-Profile anzeigen
 
stealth_mx
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 94
Anmeldedatum: 15.06.13
Wohnort: ---
Version: 2013b
     Beitrag Verfasst am: 05.03.2015, 13:26     Titel:
  Antworten mit Zitat      
Hi in dem Opening sollte kein Fehler sein, da du an ihm keine Veränderung vorgenommen hast. Kannst du bitte das world3_gui zur Verfügung stellen? Weil in dem Fragment keine Fehler sind. Ich müsste die restlichen Funktionen sehen um zu verstehen was du genau gemacht hast.
Private Nachricht senden Benutzer-Profile anzeigen
 
NicoPdm
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 25.02.15
Wohnort: Potsdam
Version: ---
     Beitrag Verfasst am: 05.03.2015, 13:53     Titel:
  Antworten mit Zitat      
Hallo, hier der komplette Code...
Code:
function varargout = world3_gui(varargin)
% WORLD3_GUI MATLAB code for world3_gui.fig
%      WORLD3_GUI, by itself, creates a new WORLD3_GUI or raises the existing
%      singleton*.
%
%      H = WORLD3_GUI returns the handle to a new WORLD3_GUI or the handle to
%      the existing singleton*.
%
%      WORLD3_GUI('CALLBACK',hObject,eventData,handles,...) calls the local
%      function named CALLBACK in WORLD3_GUI.M with the given input arguments.
%
%      WORLD3_GUI('Property','Value',...) creates a new WORLD3_GUI or raises the
%      existing singleton*.  Starting from the left, property value pairs are
%      applied to the GUI before world3_gui_OpeningFcn gets called.  An
%      unrecognized property name or invalid value makes property application
%      stop.  All inputs are passed to world3_gui_OpeningFcn via varargin.
%
%      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
%      instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help world3_gui

% Last Modified by GUIDE v2.5 04-Mar-2015 11:29:46

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @world3_gui_OpeningFcn, ...
                   'gui_OutputFcn',  @world3_gui_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT


% --- Executes just before world3_gui is made visible.
function world3_gui_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to world3_gui (see VARARGIN)

set(handles.pushbutton1, 'Enable', 'Off');

% Choose default command line output for world3_gui
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes world3_gui wait for user response (see UIRESUME)
% uiwait(handles.figure1);


% --- Outputs from this function are returned to the command line.
function varargout = world3_gui_OutputFcn(hObject, eventdata, handles)
% varargout  cell array for returning output args (see VARARGOUT);
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout{1} = handles.output;


% --- Executes on selection change in popupmenu1.
function popupmenu1_Callback(hObject, eventdata, handles)
% hObject    handle to popupmenu1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

str = get(hObject, 'String');
val = get(hObject, 'Value');
switch str{val};
    case 'Bitte Szenario auswählen'
set(handles.pushbutton1, 'Enable', 'Off');
    case 'Szenario 1'
set(handles.pushbutton1, 'Enable', 'On');
handles.t_policy_year = [2002];
handles.t_air_poll_time = [4000];
handles.t_land_fert_time = [4000];
handles.t_fcaor_time = [4000];
handles.t_zero_pop_grow_time = [4000];
handles.t_ind_equil_time = [4000];
handles.t_fert_eff_time = [4000];
handles.in_TDD = [20];
handles.nr_resources = [1e12];
handles.p_avg_life_agr_inp = [2];
handles.chg_mlt_POLGM = [0];
handles.chg_mlt_LYCM = [0];
handles.chg_mlt_NRCM = [0];
handles.des_fam_size = [2];
handles.ind_out_pc_des = [400];
handles.p_avg_life_ind_cap = [14];
handles.p_avg_life_serv_cap = [20];
handles.p_serv_cap_out_ratio = [1];

% Funktioniert.

    case 'Szenario 2'
set(handles.pushbutton1, 'Enable', 'On');
handles.t_policy_year = [2002];
handles.t_air_poll_time = [4000];
handles.t_land_fert_time = [4000];
handles.t_fcaor_time = [2002];
handles.t_zero_pop_grow_time = [4000];
handles.t_ind_equil_time = [4000];
handles.t_fert_eff_time = [4000];
handles.in_TDD = [20];
handles.nr_resources = [2e12];
handles.p_avg_life_agr_inp = [2];
handles.chg_mlt_POLGM = [0];
handles.chg_mlt_LYCM = [0];
handles.chg_mlt_NRCM = [0];
handles.des_fam_size = [2];
handles.ind_out_pc_des = [400];
handles.p_avg_life_ind_cap = [14];
handles.p_avg_life_serv_cap = [20];
handles.p_serv_cap_out_ratio = [1];

% Funktioniert.

    case 'Szenario 3'
set(handles.pushbutton1, 'Enable', 'On');
handles.t_policy_year = [2002];
handles.t_air_poll_time = [4000];
handles.t_land_fert_time = [4000];
handles.t_fcaor_time = [2002];
handles.t_zero_pop_grow_time = [4000];
handles.t_ind_equil_time = [4000];
handles.t_fert_eff_time = [4000];
handles.in_TDD = [20];
handles.nr_resources = [2e12];
handles.p_avg_life_agr_inp = [2];
handles.chg_mlt_POLGM = [-0.04];
handles.chg_mlt_LYCM = [0];
handles.chg_mlt_NRCM = [0];
handles.des_fam_size = [2];
handles.ind_out_pc_des = [400];
handles.p_avg_life_ind_cap = [14];
handles.p_avg_life_serv_cap = [20];
handles.p_serv_cap_out_ratio = [1];

% Funktioniert.

    case 'Szenario 4'
set(handles.pushbutton1, 'Enable', 'On');
handles.t_policy_year = [2002];
handles.t_air_poll_time = [4000];
handles.t_land_fert_time = [4000];
handles.t_fcaor_time = [2002];
handles.t_zero_pop_grow_time = [4000];
handles.t_ind_equil_time = [4000];
handles.t_fert_eff_time = [4000];
handles.in_TDD = [20];
handles.nr_resources = [2e12];
handles.p_avg_life_agr_inp = [2];
handles.chg_mlt_POLGM = [-0.04];
handles.chg_mlt_LYCM = [0.04];
handles.chg_mlt_NRCM = [0];
handles.des_fam_size = [2];
handles.ind_out_pc_des = [400];
handles.p_avg_life_ind_cap = [14];
handles.p_avg_life_serv_cap = [20];
handles.p_serv_cap_out_ratio = [1];

% Funktioniert.

    case 'Szenario 5'
set(handles.pushbutton1, 'Enable', 'On');
handles.t_policy_year = [2002];
handles.t_air_poll_time = [4000];
handles.t_land_fert_time = [2002];
handles.t_fcaor_time = [2002];
handles.t_zero_pop_grow_time = [4000];
handles.t_ind_equil_time = [4000];
handles.t_fert_eff_time = [4000];
handles.in_TDD = [20];
handles.nr_resources = [2e12];
handles.p_avg_life_agr_inp = [2];
handles.chg_mlt_POLGM = [-0.04];
handles.chg_mlt_LYCM = [0.04];
handles.chg_mlt_NRCM = [0];
handles.des_fam_size = [2];
handles.ind_out_pc_des = [400];
handles.p_avg_life_ind_cap = [14];
handles.p_avg_life_serv_cap = [20];
handles.p_serv_cap_out_ratio = [1];

% Funktioniert.
 
    case 'Szenario 6'
set(handles.pushbutton1, 'Enable', 'On');
handles.t_policy_year = [2002];
handles.t_air_poll_time = [4000];
handles.t_land_fert_time = [2002];
handles.t_fcaor_time = [2002];
handles.t_zero_pop_grow_time = [4000];
handles.t_ind_equil_time = [4000];
handles.t_fert_eff_time = [4000];
handles.in_TDD = [20];
handles.nr_resources = [2e12];
handles.p_avg_life_agr_inp = [2];
handles.chg_mlt_POLGM = [-0.04];
handles.chg_mlt_LYCM = [0.04];
handles.chg_mlt_NRCM = [-0.04];
handles.des_fam_size = [2];
handles.ind_out_pc_des = [400];
handles.p_avg_life_ind_cap = [14];
handles.p_avg_life_serv_cap = [20];
handles.p_serv_cap_out_ratio = [1];

% Funktioniert.

    case 'Szenario 7'
set(handles.pushbutton1, 'Enable', 'On');
handles.t_policy_year = [2002];
handles.t_air_poll_time = [4000];
handles.t_land_fert_time = [4000];
handles.t_fcaor_time = [2002];
handles.t_zero_pop_grow_time = [4000];
handles.t_ind_equil_time = [4000];
handles.t_fert_eff_time = [2002];
handles.in_TDD = [20];
handles.nr_resources = [2e12];
handles.p_avg_life_agr_inp = [2];
handles.chg_mlt_POLGM = [0];
handles.chg_mlt_LYCM = [0];
handles.chg_mlt_NRCM = [0];
handles.des_fam_size = [2];
handles.ind_out_pc_des = [400];
handles.p_avg_life_ind_cap = [14];
handles.p_avg_life_serv_cap = [20];
handles.p_serv_cap_out_ratio = [1];

% Funktioniert.

    case 'Szenario 8'
set(handles.pushbutton1, 'Enable', 'On');
handles.t_policy_year = [2002];
handles.t_air_poll_time = [4000];
handles.t_land_fert_time = [4000];
handles.t_fcaor_time = [2002];
handles.t_zero_pop_grow_time = [4000];
handles.t_ind_equil_time = [2002];
handles.t_fert_eff_time = [2002];
handles.in_TDD = [20];
handles.nr_resources = [2e12];
handles.p_avg_life_agr_inp = [2.5];
handles.chg_mlt_POLGM = [0];
handles.chg_mlt_LYCM = [0];
handles.chg_mlt_NRCM = [0];
handles.des_fam_size = [2];
handles.ind_out_pc_des = [350];
handles.p_avg_life_ind_cap = [18];
handles.p_avg_life_serv_cap = [25];
handles.p_serv_cap_out_ratio = [1];

% Funktioniert.

    case 'Szenario 9'
set(handles.pushbutton1, 'Enable', 'On');
handles.t_policy_year = [2002];
handles.t_air_poll_time = [4000];
handles.t_land_fert_time = [2002];
handles.t_fcaor_time = [2002];
handles.t_zero_pop_grow_time = [4000];
handles.t_ind_equil_time = [2002];
handles.t_fert_eff_time = [2002];
handles.in_TDD = [20];
handles.nr_resources = [2e12];
handles.p_avg_life_agr_inp = [2.5];
handles.chg_mlt_POLGM = [-0.04];
handles.chg_mlt_LYCM = [0.04];
handles.chg_mlt_NRCM = [-0.04];
handles.des_fam_size = [2];
handles.ind_out_pc_des = [350];
handles.p_avg_life_ind_cap = [18];
handles.p_avg_life_serv_cap = [25];
handles.p_serv_cap_out_ratio = [1];

% Funktioniert.

    case 'Szenario 10'
set(handles.pushbutton1, 'Enable', 'On');
handles.t_policy_year = [1982];
handles.t_air_poll_time = [4000];
handles.t_land_fert_time = [1982];
handles.t_fcaor_time = [1982];
handles.t_zero_pop_grow_time = [4000];
handles.t_ind_equil_time = [1982];
handles.t_fert_eff_time = [1982];
handles.in_TDD = [20];
handles.nr_resources = [2e12];
handles.p_avg_life_agr_inp = [2.5];
handles.chg_mlt_POLGM = [-0.04];
handles.chg_mlt_LYCM = [0.04];
handles.chg_mlt_NRCM = [-0.04];
handles.des_fam_size = [2];
handles.ind_out_pc_des = [350];
handles.p_avg_life_ind_cap = [18];
handles.p_avg_life_serv_cap = [25];
handles.p_serv_cap_out_ratio = [1];

% Funktioniert.

end

% Save the handles structure
 guidata(hObject, handles);


% Hints: contents = cellstr(get(hObject,'String')) returns popupmenu1 contents as cell array
%        contents{get(hObject,'Value')} returns selected item from popupmenu1


% --- Executes during object creation, after setting all properties.
function popupmenu1_CreateFcn(hObject, eventdata, handles)
% hObject    handle to popupmenu1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: popupmenu controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end


% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

world3_gui_sim;




function edit1_Callback(hObject, eventdata, handles)
% hObject    handle to edit1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit1 as text
%        str2double(get(hObject,'String')) returns contents of edit1 as a double


% --- Executes during object creation, after setting all properties.
function edit1_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function edit2_Callback(hObject, eventdata, handles)
% hObject    handle to edit2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit2 as text
%        str2double(get(hObject,'String')) returns contents of edit2 as a double


% --- Executes during object creation, after setting all properties.
function edit2_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function edit3_Callback(hObject, eventdata, handles)
% hObject    handle to edit3 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit3 as text
%        str2double(get(hObject,'String')) returns contents of edit3 as a double


% --- Executes during object creation, after setting all properties.
function edit3_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit3 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function edit4_Callback(hObject, eventdata, handles)
% hObject    handle to edit4 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit4 as text
%        str2double(get(hObject,'String')) returns contents of edit4 as a double


% --- Executes during object creation, after setting all properties.
function edit4_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit4 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function edit5_Callback(hObject, eventdata, handles)
% hObject    handle to edit5 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit5 as text
%        str2double(get(hObject,'String')) returns contents of edit5 as a double


% --- Executes during object creation, after setting all properties.
function edit5_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit5 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function edit6_Callback(hObject, eventdata, handles)
% hObject    handle to edit6 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit6 as text
%        str2double(get(hObject,'String')) returns contents of edit6 as a double


% --- Executes during object creation, after setting all properties.
function edit6_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit6 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function edit7_Callback(hObject, eventdata, handles)
% hObject    handle to edit7 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit7 as text
%        str2double(get(hObject,'String')) returns contents of edit7 as a double


% --- Executes during object creation, after setting all properties.
function edit7_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit7 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function edit8_Callback(hObject, eventdata, handles)
% hObject    handle to edit8 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit8 as text
%        str2double(get(hObject,'String')) returns contents of edit8 as a double


% --- Executes during object creation, after setting all properties.
function edit8_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit8 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function edit9_Callback(hObject, eventdata, handles)
% hObject    handle to edit9 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit9 as text
%        str2double(get(hObject,'String')) returns contents of edit9 as a double


% --- Executes during object creation, after setting all properties.
function edit9_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit9 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function edit10_Callback(hObject, eventdata, handles)
% hObject    handle to edit10 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit10 as text
%        str2double(get(hObject,'String')) returns contents of edit10 as a double


% --- Executes during object creation, after setting all properties.
function edit10_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit10 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function edit11_Callback(hObject, eventdata, handles)
% hObject    handle to edit11 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit11 as text
%        str2double(get(hObject,'String')) returns contents of edit11 as a double


% --- Executes during object creation, after setting all properties.
function edit11_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit11 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function edit12_Callback(hObject, eventdata, handles)
% hObject    handle to edit12 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit12 as text
%        str2double(get(hObject,'String')) returns contents of edit12 as a double


% --- Executes during object creation, after setting all properties.
function edit12_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit12 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function edit13_Callback(hObject, eventdata, handles)
% hObject    handle to edit13 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit13 as text
%        str2double(get(hObject,'String')) returns contents of edit13 as a double


% --- Executes during object creation, after setting all properties.
function edit13_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit13 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function edit14_Callback(hObject, eventdata, handles)
% hObject    handle to edit14 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit14 as text
%        str2double(get(hObject,'String')) returns contents of edit14 as a double


% --- Executes during object creation, after setting all properties.
function edit14_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit14 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function edit15_Callback(hObject, eventdata, handles)
% hObject    handle to edit15 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit15 as text
%        str2double(get(hObject,'String')) returns contents of edit15 as a double


% --- Executes during object creation, after setting all properties.
function edit15_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit15 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function edit16_Callback(hObject, eventdata, handles)
% hObject    handle to edit16 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit16 as text
%        str2double(get(hObject,'String')) returns contents of edit16 as a double


% --- Executes during object creation, after setting all properties.
function edit16_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit16 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function edit17_Callback(hObject, eventdata, handles)
% hObject    handle to edit17 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit17 as text
%        str2double(get(hObject,'String')) returns contents of edit17 as a double


% --- Executes during object creation, after setting all properties.
function edit17_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit17 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function edit18_Callback(hObject, eventdata, handles)
% hObject    handle to edit18 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit18 as text
%        str2double(get(hObject,'String')) returns contents of edit18 as a double


% --- Executes during object creation, after setting all properties.
function edit18_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit18 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end


% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

handles.t_policy_year = str2double(get(handles.edit1,'String'));
handles.t_air_poll_time = str2double(get(handles.edit2, 'String'));
handles.t_land_fert_time = str2double(get(handles.edit3, 'String'));
handles.t_fcaor_time = str2double(get(handles.edit4, 'String'));
handles.t_zero_pop_grow_time = str2double(get(handles.edit5, 'String'));
handles.t_ind_equil_time = str2double(get(handles.edit6, 'String'));
handles.t_fert_eff_time = str2double(get(handles.edit7, 'String'));
handles.in_TDD = str2double(get(handles.edit8, 'String'));
handles.nr_resources = str2double(get(handles.edit9, 'String'));
handles.p_avg_life_agr_inp = str2double(get(handles.edit10, 'String'));
handles.chg_mlt_POLGM = str2double(get(handles.edit11, 'String'));
handles.chg_mlt_LYCM = str2double(get(handles.edit12, 'String'));
handles.chg_mlt_NRCM = str2double(get(handles.edit13, 'String'));
handles.des_fam_size = str2double(get(handles.edit14, 'String'));
handles.ind_out_pc_des = str2double(get(handles.edit15, 'String'));
handles.p_avg_life_ind_cap = str2double(get(handles.edit16, 'String'));
handles.p_avg_life_serv_cap = str2double(get(handles.edit17, 'String'));
handles.p_serv_cap_out_ratio = str2double(get(handles.edit18, 'String'));

set(handles.text21, 'Visible', 'Off');

% Save the handles structure
 guidata(hObject, handles);

world3_gui_sim;




% --- Executes during object creation, after setting all properties.
function axes1_CreateFcn(hObject, eventdata, handles)
% hObject    handle to axes1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: place code in OpeningFcn to populate axes1


% --- Executes on button press in pushbutton3.
function pushbutton3_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton3 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

set(handles.edit1, 'String', num2str(handles.t_policy_year));
set(handles.edit2, 'String', num2str(handles.t_air_poll_time));
set(handles.edit3, 'String', num2str(handles.t_land_fert_time));
set(handles.edit4, 'String', num2str(handles.t_fcaor_time));
set(handles.edit5, 'String', num2str(handles.t_zero_pop_grow_time));
set(handles.edit6, 'String', num2str(handles.t_ind_equil_time));
set(handles.edit7, 'String', num2str(handles.t_fert_eff_time));
set(handles.edit8, 'String', num2str(handles.in_TDD));
set(handles.edit9, 'String', num2str(handles.nr_resources));
set(handles.edit10, 'String', num2str(handles.p_avg_life_agr_inp));
set(handles.edit11, 'String', num2str(handles.chg_mlt_POLGM));
set(handles.edit12, 'String', num2str(handles.chg_mlt_LYCM));
set(handles.edit13, 'String', num2str(handles.chg_mlt_NRCM));
set(handles.edit14, 'String', num2str(handles.des_fam_size));
set(handles.edit15, 'String', num2str(handles.ind_out_pc_des));
set(handles.edit16, 'String', num2str(handles.p_avg_life_ind_cap));
set(handles.edit17, 'String', num2str(handles.p_avg_life_serv_cap));
set(handles.edit18, 'String', num2str(handles.p_serv_cap_out_ratio));
 

Ich hoffe, du kannst damit was anfangen. Shocked
Danke und viele Grüße
Nico
Private Nachricht senden Benutzer-Profile anzeigen
 
stealth_mx
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 94
Anmeldedatum: 15.06.13
Wohnort: ---
Version: 2013b
     Beitrag Verfasst am: 05.03.2015, 14:30     Titel:
  Antworten mit Zitat      
Eines vorneweg. es ist ziemlich redundant das ganze. du könntest mit Schleifen die Arbeit erleichtern und den Code auf wenige Zeilen reduzieren. Aber das sind dann Feinheiten Wink

Also du suchst dir ein Szenario mit bestimmten Parametersätzen. Dann akvierst du einen Button. (Du musst nicht in jedem Case den Button aktivieren, am Ende einmal würde genügen.)

world3_gui_sim; was ist das?

Und bei welcher Interaktion verschiebt sich die GUI? Also wenn du was drückst?
Private Nachricht senden Benutzer-Profile anzeigen
 
NicoPdm
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 25.02.15
Wohnort: Potsdam
Version: ---
     Beitrag Verfasst am: 06.03.2015, 10:05     Titel:
  Antworten mit Zitat      
Hallo stealth_mx,
dass das programmiertechnisch jetzt nicht das gelbe vom Ei ist, dachte ich mir schon. Laughing Wie gesagt, habe ich ja erst vor ein paar Wochen das erste mal MATLAB gesehen, und ich wollte es erstmal so hinbekommen, dass es funktioniert. An die Feinheiten wollte ich mich später ranwagen. Wink
Zitat:
Also du suchst dir ein Szenario mit bestimmten Parametersätzen. Dann akvierst du einen Button. (Du musst nicht in jedem Case den Button aktivieren, am Ende einmal würde genügen.)

Genau, in einem Popup-Menü steht drin "Bitte Szenario Auswählen", "Szenario 1", "Szenario 2", ... je nachdem, welches ich da auswähle, schreibt er mir andere Parameter in die Handles-Struktur.
Das mit dem Button habe ich erstmal so gelöst, weil ich wollte, dass der "Simulation Starten"-Knopf ausgegraut ist, falls "Bitte Szenario wählen" im Popup-Menü ausgewählt ist.
Was world3_gui_sim macht, habe ich weiter oben beschrieben:
Zitat:

Ich habe ein Skript, "world3_gui_sim.m", das die Funktion erfüllt, die vom GUI erhaltenen Variablen aus den Handles (durch
Code:
handles = guidata(world3_gui);
)
über assignin in den Workspace zu laden. Danach startet es eine Simulink-Simulation und plottet einige Ergebnisgraphen dieser Simulation zurück auf mein GUI in drei verschiedene Axes.
Dieses Skript wird vom GUI aus über einen Pushbutton aufgerufen, nachdem ich entweder über ein Popup-Menü oder alternativ über Edit-Felder und einen Einlesen-Knopf bestimmte Werte in die Handles eingetragen habe.

Zitat:
Und bei welcher Interaktion verschiebt sich die GUI? Also wenn du was drückst?

Es verschiebt sich, sobald die Handles in world3_gui_sim geladen werden, also sobald die Zeile
Code:
handles = guidata(world3_gui);
ausgeführt wird. Das passiert, sobald ich den Pushbutton betätige, der world3_gui_sim aufruft. Mehr dazu siehe oben.

Danke und VG
Nico
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 06.03.2015, 10:25     Titel:
  Antworten mit Zitat      
Hallo,

ich finde in dem Code die besagte Zeile gar nicht.
Warum ist es denn nötig, die handles zu holen? Wird das aus einer anderen Funktion aufgerufen? Falls ja, würde ich an diese andere Funktion entweder die gesamte Handles-Struktur oder zumindest das Handle auf die Figure übergeben und dann
Code:
handles = guidata(fig_handle)
verwenden.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 06.03.2015, 11:00     Titel:
  Antworten mit Zitat      
Hallo NicoPdm,

Zitat:
Es verschiebt sich, sobald die Handles in world3_gui_sim geladen werden, also sobald die Zeile
Code:
handles = guidata(world3_gui);
ausgeführt wird.

Wie schon ein paar mal gesagt wurde: Wenn der Aufruf von world3_gui zu den Problemen führt, rufe es einfach nicht auf. Die Lösung klingt wirklich trivial. Hast Du irgendeinen Grund, diese Funktion hier aufzurufen? GUIDATA benötigt nur den Handle des GUI. Der wird zwar als Nebenprodukt auch als Rückgabe des Funktions-Aufrufes geliefert, aber sich von hinten durch die Brust ins Auge zu schießen hat hier offenbar ungewollte Nebenwirkungen. Darum rate ich Dir nochmal es direkt zu machen:
Code:
fig_handle = findobj(allchild(0), 'flat', 'Tag', 'world3_gui');
handles = guidata(fig_handle);

Ich habe hier mal angenommen, dass Dein GUI den Tag 'world3_gui' hat. Vielleicht ist auch der Title oder Name des FIGURE-Objekts besser geeignet. Oder Du könntest den Handle irgendwo speichern, wenn das GUI zum ersten Mal erstellt wird.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
NicoPdm
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 25.02.15
Wohnort: Potsdam
Version: ---
     Beitrag Verfasst am: 06.03.2015, 11:16     Titel:
  Antworten mit Zitat      
Hallo Harald,
die besagte Zeile steht in dem Skript "world3_gui_sim".
Zitat:
Warum ist es denn nötig, die handles zu holen? Wird das aus einer anderen Funktion aufgerufen? Falls ja, würde ich an diese andere Funktion entweder die gesamte Handles-Struktur oder zumindest das Handle auf die Figure übergeben und dann

Ob es wirklich nötig ist, weiß ich nicht, da ich aber neu bin in der Materie bin, bin ich es so angegangen. Ich versuche nochmal, verständlich auszudrücken, was ich gemacht habe und was ich vor habe:

1) Ich habe ein GUI, "world3_gui". In diesem GUI befinden sich:
Ein Popup-Menü, in dem ich zwischen verschiedenen Szenarien auswähle. Je nachdem, welches Szenario ich auswähle, schreibe ich verschiedene Variablen in die Handles-Struktur. (Siehe den Code oben.)

2) Ein Pushbutton, in dem nichts weiter im Callback steht als "world3_gui_sim".

3) Desweiteren habe ich ein m-File namens "world3_gui_sim", das folgendes tut:
- 3.1) "handles = guidata(world3_gui);
- 3.2) assignin('base', 'Variable1', handles.Variable1); usw.
- 3.3) Start einer Simulink-Simulation, die mit den übergebenen Werten
aus den Handles arbeitet.
- 3.4) Plotten verschiedener Ergebnisse in drei verschiedene Axes.

4) Das gleiche Spiel kann ich auch über Edit-Felder machen, in denen ich manuell die Werte eingebe. Die werden dann über einen "Werte übernehmen"-Pushbutton in die Handles-Struktur geschrieben. Dann kann ich wiederum über einen Button das Skript "world3_gui_sim" starten, und er plottet mir die Ergebnisse diesmal mit den eingetragenen Werten aus den Edit-Feldern.

Alles klappt wunderbar, er plottet alles so wie er es soll. Das einzige Problem ist wie gesagt, dass sich mein GUI beim Drücken der Buttons verschiebt, die mein "world3_gui_sim" aufrufen. Über Breakpoints habe ich nun herausgefunden, dass es an der Zeile
Code:
handles = guidata(world3_gui);
hapert. Sobald diese ausgeführt wird, verschiebt sich mein GUI an immer die gleiche Stelle auf dem Monitor. Dazu steht auch alles weitere schon weiter oben.

Ich hoffe, du verstehst jetzt mein Problem. Ich würde mich freuen, wenn du eine Lösung weißt. Smile

Viele Grüße
Nico
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 06.03.2015, 11:26     Titel:
  Antworten mit Zitat      
Hallo,

das einfachste wäre also, handles als Eingabeargument an world3_gui_sim zu übergeben. Damit wird der guidata-Aufruf komplett vermieden.

Alternativ Jans letzter Vorschlag oder mein darüberstehender Vorschlag.

assignin sollte grundsätzlich vermieden werden. Zur Verwaltung von Daten in GUIs würde ich Application Data verwenden, siehe hier:
http://de.mathworks.com/help/matlab.....ng-callbacks.html#bt9p4t0

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
NicoPdm
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 25.02.15
Wohnort: Potsdam
Version: ---
     Beitrag Verfasst am: 06.03.2015, 11:35     Titel:
  Antworten mit Zitat      
Hallo Leute,
Code:
fig_handle = findobj(allchild(0), 'flat', 'Tag', 'world3_gui');
handles = guidata(fig_handle);
 

Das hat letztlich den Ausschlag gebracht, jetzt verschiebt sich nix mehr! Very Happy

Ich danke euch allen recht herzlich für eure Hilfe und Geduld. Smile

Schönes Wochenende allesamt und viele Grüße
Nico
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.