Verfasst am: 10.11.2009, 14:58
Titel: GUI immer wieder aktualisiert nicht in den Vordergrund
Hallo,
ich habe eine GUI mit einem immer wieder aktualisiertem Image in einem Axes. Dieses Fenster kommt bei jeder Aktualisierung des Images in den Vordergrund...
Kann man dieses Verhalten irgendwie unterdrücken?
Nochmal zur Erklärung meines Problems:
Ich habe eine GUI mit einer Anzeige eines Bildes in dieser GUI. Also im GUI ist ein entsprechendes "AXES" definiert.
Im dazugehörigen M-File habe ich eine Schleife in der dieses Bild mit IMAGE() immer wieder aktualisiert wird.
Allerdings bekommt das GUI Fenster durch jedes Aktualisieren den Fokus und dies möchte ich unterbinden!
Hallo
ich habe auch das Gefühl, dass wir aneinander vorbeireden.
In diesem Fall spielt keine Rolle, wie du das Fenster erzeugt hast.
Ich habe dir 2 Wege gezeigt,
wie das Fokus an Fenster überhaupt gesetzt wird.
Code:
% Enweder so, % wobei das Fenster immer in der Vordergrund Springt. figure(hier_handle_deines_Fensters) % oder so % wobei das Fenster im Hintergrund bleibt. % der Befehl muss genau so heißen + handle von deinem Fenster % wenn du über GUIDE gemacht hast % dann ist in Struct handles zu finden set(0,'CurrentFigure', hier_handle_deines_Fensters)
nur zur Klarstellung: Auch ein GUI ist immer eine figure, in der dann die verschiedenen Objekte (also axes, uicontrols usw.) eingebettet sind. Du musst Dir also "nur" den Handle dieser figure besorgen. Das hat denny genauso geschrieben...
Sorry, ich kann mir das noch 100 mal durchlesen aber mit meinen Erfahrungen in Matlab hat das so kein Sinn!!!
Ich kapier nicht was du mir sagen willst!!!!
Ich hab eine Funktion (ein Button) in welcher eine schleife ist die im GUI immer wieder ein Bild aktualisiert...
Wo soll ich denn da nun was ändern?!
Tut mir ja leider aber ich kann das so einfach nicht verstehen... Da fehlt mir zu viel an Wissen! Und langsam nervt es mich auch, dass ich für so eine banale Funktion so viel Zeit investieren muss...
Ich kürze sie mal auf die relevanten Teile raus...
Code:
function start_Callback(hObject, eventdata, handles) % ...Initialisierung und paar Abfragen... while endlosschleife
% ...Berechnungen... axes(handles.Anzeige);
image(Bild);
end
Hallo,
also ist etwas klarer, bei dir wird der Fokus über axes gesetzt
ersetze es durch set(GUI_Handle,'CurrentAxes', Axes_Handle)
Code:
function start_Callback(hObject, eventdata, handles) % ...Initialisierung und paar Abfragen... while endlosschleife
% ...Berechnungen... % an dieser Stelle passiert dieses Aufspingen des Fensters % also axes(handles.Anzeige); % durch set(GUI_Handle,'CurrentAxes', Axes_Handle) ersetzen
set(handles.GUI_Tag, 'CurrentAxes', handles.Anzeige);
image(Bild);
end
Ich bin mir jetzt nicht sicher ob ich den "Tag" des GUI richtig heraus gefunden habe. Ich habe mittels GUIDE rechtsklick auf ein leeres Feld und dann Property Inspector. Den "Tag" dort habe ich dann folgendermaßen eingetragen:
Mittels drawnow kann ich das Bild sehen, allerdings gibt es noch diverse Linien auf dem Bild, welche nun erst nach dem "stop" betätigen zu sehen sind und nicht wie zuvor live...
Wenn ich drawnow auch hinter die lines setze flimmern diese aber sehr unschön... Kann man diese Eigenschaft nicht irgendwie allgemein vergeben?
EDIT
Hab das drawnow an's Ende nach allen Berechnungen gesetzt. Nun funktioniert es einwandfrei!!
VIELEN DANK für die Geduld mit mir
Einstellungen und Berechtigungen
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
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.