Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Bücher:

Fachkräfte:
Softwareentwickler (m/w) automatische Codegenerierung
Umsetzung, Neuprogrammierung und Weiterentwicklung in Simulink, TargetLink und C
EFS - Ingolstadt, Wolfsburg

Informatiker (m/w) für den Bereich Toolkette Embedded Software
Weiterentwicklung einer MATLAB- / Simulink-Toolkette
cbb-Software GmbH - Stuttgart

Ingenieur (m/w) für den Bereich modellbasierte Embedded-Softwareentwicklung
Integration von Simulink-Modellen auf die Ziel-Hardware (mit TargetLink) sowie Durchführung von Softwaretests
cbb-Software GmbH - Stuttgart

Modellierer für Zentralverriegelung (w/m)
Umsetzung neuer Funktionen im Elektromobilitätsumfeld
Carmeq GmbH - Berlin

Wissenschaftliche Mitarbeiterin / Wissenschaftlicher Mitarbeiter in der Professur für Mechatronik
Mitarbeit in Forschung und Lehre im Fachgebiet Mechatronik
Helmut-Schmidt-Universität Hamburg - Hamburg

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: 32
Anmeldedatum: 08.07.15
Wohnort: Baden-Württemberg
Version: R2016b
     Beitrag Verfasst am: 11.05.2017, 10: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: 32
Anmeldedatum: 08.07.15
Wohnort: Baden-Württemberg
Version: R2016b
     Beitrag Verfasst am: 11.05.2017, 16: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.515
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 19.05.2017, 09: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: 32
Anmeldedatum: 08.07.15
Wohnort: Baden-Württemberg
Version: R2016b
     Beitrag Verfasst am: 23.05.2017, 15: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 - 2018 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.