Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   
Bücher:

Fachkräfte:
Entwicklungsingenieur (m/w) für modellbasierte Softwareentwicklung
Modellbasierte Softwareentwicklung mit MATLAB/Simulink und dSPACE TargetLink
Elektronische Fahrwerksysteme GmbH - Ingolstadt

Softwareentwickler (m/w) für automatische Codegenerierung
Softwareentwicklung mit MATLAB/Simulink und dSPACE TargetLink im Bereich Fahrwerkregelsysteme
Elektronische Fahrwerksysteme GmbH - Ingolstadt

Ingenieur (w/m) modellbasierte Entwicklung / Embedded Programmierung
Organisation und Durchführung von Projekten zur Integration von TargetLink in aktuelle Entwicklungsprozesse
dSPACE GmbH - Pfaffenhofen

Software-Entwicklungsingenieur (m/w) Referenzierungsmethoden autonomes Fahren
Automatisierung von Bewertungsmethoden und Kalibrierverfahren nach Kundenanforderungen
Elektronische Fahrwerksysteme GmbH - Ingolstadt

Test-Ingenieur (m/w) für Resimulation
Implementierung, Integration und Anpassung von sogenannten ADTF-Filtern
Automotive Safety Technologies GmbH - Ingolstadt

weitere Angebote

Partner:


Vermarktungspartner


Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Waitbar innerhalb der Gui, erstellt mit Guide

 

Vesuv
Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 08.07.15
Wohnort: Baden-Württemberg
Version: R2016b
     Beitrag Verfasst am: 11.05.2017, 09:41     Titel: Waitbar innerhalb der Gui, erstellt mit Guide
  Antworten mit Zitat      
Hallo zusammen,

ich möchte gerne eine "Waitbar" in meine GUI (erstellt mit guide) einabuen.

Aktuell existiert meine Waitbar als solche und da ich sie egal auf welchem Bildschirm im Vordergrund zentriert vor meiner Gui haben will, benutze ich
Code:

h = waitbar(0, '','Name', 'Please wait...');
for idx = 1:length(LängeDerFileListeEben)
centerfig(h,myGui);
set(h, 'WindowStyle', 'modal');
% hier folgt dann jede Menge Code..
if ishandle(h)
                  waitbar(idx/length(LängeDerFileListeEben),h,[num2str(idx*100/length(LängeDerFileListeEben)) '%']);
            else
                  disp('Prozess beendet');
                  break
            end
end
 


Jetzt habe ich das Problem dass ich weder meine Gui, noch Matlab weiterhin benutzen kann, weil die waitbar ja "modal" gesetzt wurde. Also war meine Idee einfach eine Waitbar (nach http://www.gomatlab.de/tutorial-ver.....m-eigenen-code-t489.html) innerhalb der GUI aufzubauen.
Allerdings bin ich zu blöd dafür..
Die Idee in dem Tutorial ist folgende:
Code:

figure
uicontrol('style','text', ...
          'units','pixel', ...
          'position',[19 19 122 14], ...
          'backgroundcolor',[.95 .95 .95]);
h = uicontrol('style','text', ...
              'units','pixel', ...
              'position',[20 20 120 12], ...
              'backgroundcolor',[.4 .4 .4], ...
              'foregroundcolor',[.95 .95 .95]);
%
for i=1:80
   pos = get(h,'position');
   % der Balken ist maximal 120 pixel lang
   pos(3) = i/80*120;
   set(h,'position',pos,'string',sprintf('%.0f%%',i/80*100))
   drawnow
   %
   %%% Hier kommt Dein Code %%%
   pause(0.05)
   %%%%%%%%%%%%%%%%%%%%%%%%%%%%
   %
end
% nach http://www.gomatlab.de/tutorial-ver.....im-eigenen-code-t489.html
 


Allerdings wird hier ja händisch die gui erstellt, und ich benutze guide von matlab..
Ich nehme stark an, dass ich ein "Panel" benutzen soll und das Step by Step einfärben will??! Allerdings steh ich so aufm Schlauch, dass ich nicht mal weiß wie und wo anfangen :'(
_________________

never touch a running system!
Private Nachricht senden Benutzer-Profile anzeigen


Vesuv
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 08.07.15
Wohnort: Baden-Württemberg
Version: R2016b
     Beitrag Verfasst am: 11.05.2017, 15:43     Titel:
  Antworten mit Zitat      
ok...
hab jetzt ein Probe-Gui mit guide erstellen können, in der ich zumindest mal einen Ladebalken gebracht habe... Allerdings gefällt mir die Position überhaupt nicht.

Jetzt scheitere ich daran die Position im Code zu ändern, weil ich wohl nicht ganz verstehe was ich da eigentlich mache -.-'

Habe im Gui-guide einen Button hingeklatscht und mir die Position abgeschrieben Smile Funktioniert natürlich üüüüberhaupt nicht Very Happy

Vorallem weil ich nicht so ganz verstehe was die beiden Zeilen
Code:

          'position',[19 19 122 14], ...
          %natürlich mit dem ganzen Code von oben...
          'position',[20 20 120 12], ...
 


eigentlich machen Sad
Die erste sollte angeben von wo bis wo mein "Panel" geht.. was macht die Zweite? Smile
Hab das noch nie selbst definiert, tut mir leid...
_________________

never touch a running system!
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 10.481
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 19.05.2017, 08:20     Titel:
  Antworten mit Zitat      
Hallo Vesuv,

Mit dem Setzen des Eigenschaft 'Position' setzt Du die Position des Objekts. Eigentlich trivial ;-)
Zitat:
Die erste sollte angeben von wo bis wo mein "Panel" geht.. was macht die Zweite?

Die zweite gibt an, wo sich der Button befindet. Du kannst ja einfach mal die werte ändern und anschauen, was passiert.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 08.07.15
Wohnort: Baden-Württemberg
Version: R2016b
     Beitrag Verfasst am: 23.05.2017, 14:27     Titel:
  Antworten mit Zitat      
mh..
Das Problem war, dass wenn ich selbst die Position definiere müssen völlig andere Werte verwendet werden, als wenn ich ein Panel mit guide einsetze.
Hab jetzt allerdings ein Panel mit Guide gesetzt (hier Tag: waitbar1) und färbe das, abhängig vom Simulationstand, schwarz ein.
Dazu musste ich natürlich "Background" und "Foreground" dementsprechend definieren. Bei mir [0.4 0.4 0.4] und [0.94 0.94 0.94].

Auch wenn das niemand nachmachen wollen wird, hier trotzdem der Code Very Happy
Code:

% erst einmal die Position des Panels abfragen, Position(3) ist die interessante für später
    laenge= get(handles.waitbar1, 'Position');
    laenge = laenge(3);

for idx = 1:irgendeineZahl
% Jede Menge Code
% ...

% Jetzt die Waitbar auffüllen

pos = get(handles.waitbar1, 'Position');
pos(3) = idx/irgendeineZahl*laenge;
set(handles.waitbar1, 'Position', pos, 'string', sprintf('%.0f%%', idx/irgendeineZahl*100));
drawnow;
end
 

_________________

never touch a running system!
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
.


goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de goPCB.de


 Impressum  | Nutzungsbedingungen  | Datenschutz  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2017 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

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.