Verfasst am: 23.11.2013, 12:22
Titel: Tooltip in GUI
Hallo zusammen,
ich möchte in mein GUI eine Info-/Hilfe-Funktion einbauen. Und zwar stelle ich mir das so vor dass ich mithilfe von Axes ein Bild lade (Fragezeichen oder sowas) und wenn man mit der Maus über dieses Bild fährt wird ein Kasten mit einem erklärenden Text angezeigt.
Ich habe mich jetzt schon ein paar Stunden daran versucht bin aber zu keiner Lösung gekommen.
Eine Möglichkeit ist wohl das Ganze mithilfe der WindowButtonMotionFcn zu lösen.
Ich schaffe es problemlos die aktuelle Mausposition auszulesen. Aber wie kann ich dann ein Rechteck mit Text anzeigen das wieder verschwindet sobald die Maus das Bild wieder verlässt?
if ~isfield(handles, 'help') if inBereich
handles.help = text(x, y, 'Some text') elseif inAnderemBereich
handles.help = text(x, y, 'Some other text') elseif ... end else if nichtInEinemBereich
delete(handles.help) rmfield(handles, 'help') end guidata(handles.figure1, handles)
ind = and(and(pos_x>xlim(:,1),xlim(:,2)>pos_x),and(pos_y>ylim(:,1),ylim(:,2)>pos_y));
if ind == 1
position = get(handles.axes_info_length_mikrotrips,'position');
handles.help = text(position(1),position(2),'text','FontUnit','pixels','BackgroundColor',[.7 .9 .7],'EdgeColor','red');
disp(sprintf('X=%.3f Y=%.3f',pos_x(ind),pos_y(ind)));
else ifisfield(handles,'help') delete(handles.help)
handles = rmfield(handles,'help');
end end
das Problem, dass die Funktion erst ausgeführt wird, wenn du auf das Bild klickst, wirst du aber schon vorher gehabt haben?
Wird die Callback-Funktion nicht ausgeführt, wenn du das Bild verlässt, oder lediglich nicht die Textbox entfernt?
Mit dem Debugger kannst du das ja selbst eingrenzen.
Für weitere Hilfe wäre ein lauffähiges Beispiel von Nutzen.
ich habe jetzt eine ganze Weile an einem anderen Teil meines Programms gearbeitet. Im Endeffekt ist so eine Hilfefunktion nur eine Hilfe zur leichteren Bedienung, die anderen Sachen sind aber wichtiger.
Ich bin einen Schritt weitergekommen: Der Text verschwindet wieder.
Aber: er taucht an der falschen Stelle auf, und teilweise nur nach anklicken der entsprechenden Axes.
Ich habe mal ein lauffähiges Beispiel gebastelt.
Bei Axes2 (unten) wird der Text gleich angezeigt, allerdings irgendwo anders als ich es möchte. Bei Axes1 wird er erst angezeigt sobald man einmal auf das Bild klickt. Danach erscheint der Text von Axes2 auch an anderer Stelle.
Ich schätze mal dass da irgendwas mit den Units nicht passt, komme aber nicht darauf wo der Fehler genau liegt.
Ich hoffe es findet sich jemand mit mehr Erfahrung der mir helfen kann
Danke schonmal
Habs mittlerweile hinbekommen.
Zum Testen noch das Bild aus meinem vorherigen Beitrag laden.
Und sorry für den etwas unübersichtlichen Code, es ist nur ein Beispiel zum Testen, nachdem es jetzt funktioniert werde ich es sauber in meine GUI einbauen
Ein letztes Problem habe ich aber noch: Neben den infobildern habe ich static text-Felder. Der eingeblendete Infotext wird von den text-Feldern verdeckt. static text hat leider keine Layer-Property.
Ich habe auch schon versucht im Befehl text(x,y,z,'...') einen z-Wert anzugeben und somit den Text über dem static text anzuzeigen. Hat aber nicht funktioniert.
Kann mir da jemand weiterhelfen?
Ein letztes Problem habe ich aber noch: Neben den infobildern habe ich static text-Felder. Der eingeblendete Infotext wird von den text-Feldern verdeckt. static text hat leider keine Layer-Property.
Ich habe auch schon versucht im Befehl text(x,y,z,'...') einen z-Wert anzugeben und somit den Text über dem static text anzuzeigen. Hat aber nicht funktioniert.
Kann mir da jemand weiterhelfen?
Text ist über den Rahmengrenzen nur sichtbar wenn keine GUI Elemente die Sicht behindern. Das einzige was mir dazu einfällt, die Static Text auszublenden. Also Visible auf off setzen.
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.