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

Position des GUI-Fensters

 

dumdidum
Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 21.05.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.05.2008, 16:17     Titel: Position des GUI-Fensters
  Antworten mit Zitat      
Moin!
Ich möchte das meine GUI beim Starten den Bildschirm ausfüllt. Also habe im Property-Inspector die Position auf [0 0 1 1] und units auf normalized gestellt. Die Größe des Fenster stimm auch, aber es wird etwas verschoben, siehe



Auch über set klappt es nicht.
Was mache ich falsch??

mfg
Private Nachricht senden Benutzer-Profile anzeigen


nschlange
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.320
Anmeldedatum: 06.09.07
Wohnort: NRW
Version: R2007b
     Beitrag Verfasst am: 23.05.2008, 16:42     Titel:
  Antworten mit Zitat      
Hi, dazu würde ich wieder den File Exchange bemühen.

Alle anderen Tricks mit 'Screensize' und so weiter klappen nicht richtig, zumindest bei den meisten.

Wenn Du die Datei runterlädst kannst Du schreiben:
Code:
function vollbildgui

h.fig=figure;
maximize(h.fig);

_________________

Viele Grüße
nschlange

"Chuck Norris ejakuliert fluessigen Stahl!"
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
dumdidum
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 21.05.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.05.2008, 09:49     Titel:
  Antworten mit Zitat      
Für eine Milisekunde klappt das Laughing
dann springt das Fenster wieder auf die alte Position
Habs auch grad mit einer komplett neuen figure probiert und auch da springts kurz auf Vollbild und sofort wieder zurück....
Vielleicht liegt das irgendwie an Win Vista

Aber trotzdem danke!!
Private Nachricht senden Benutzer-Profile anzeigen
 
nschlange
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.320
Anmeldedatum: 06.09.07
Wohnort: NRW
Version: R2007b
     Beitrag Verfasst am: 24.05.2008, 10:11     Titel:
  Antworten mit Zitat      
Könnte natürlich an Vista liegen, aber nur um gefragt zu haben:
Du machst das doch nicht mit einem späteren Befehl wieder rückgängig, oder?

Sonst müsstest Du den File Exchange weiter durchsuchen, es gibt da mehrere Programme, die das lösen sollen. Ausserdem steht in den Reviews öfter etwas dazu. Hilft wohl nur probieren...
Wenn Du etwas funktionierendes gefunden hast kannst Du das gern hier veröffentlichen Wink
_________________

Viele Grüße
nschlange

"Chuck Norris ejakuliert fluessigen Stahl!"
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
dumdidum
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 21.05.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.05.2008, 11:01     Titel:
  Antworten mit Zitat      
nene Very Happy
Ich muss mal schauen, ich hab nur hier zu Hause Vista und auf der Arbeit XP, mal sehen, ob es da funktioniert.
Private Nachricht senden Benutzer-Profile anzeigen
 
outsider
Forum-Meister

Forum-Meister


Beiträge: 806
Anmeldedatum: 03.09.07
Wohnort: München
Version: R2012b
     Beitrag Verfasst am: 27.05.2008, 19:46     Titel:
  Antworten mit Zitat      
Das liegt weder am Vista, noch ist es ein Bug. Wenn ein Figure mit OPENFIG geöffnet wid (und das findet statt wenn man ein GUI startet), so ruft diese Funktion die interne Funktion MOVEGUI auf und diese lässt nicht zu, dass das Figure so nah an das Rand gezeichnet wird. das kann man unterdrücken in dem man den Aufruf von MOVEGUI in OPENFIG (auskommentiert oder man fügt die Zeile
Code:
set(hObject,'units','normalized','position',[0 0 1 1])

in die OutputFcn zu.


MfG
P.S. übrigens MOVEGUI ist auch eine ziemlich nützliche Funktion.
MOVEGUI(h,'center') platziert das Figure automatisch in die Mitte des Bildschirms... oder auch woanders 'north','south'... mehr in der Hilfe Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.029
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2024a
     Beitrag Verfasst am: 28.05.2008, 06:51     Titel:
  Antworten mit Zitat      
Hey outsider, danke!!!
Diese Funktion ist doch weitaus besser als die Position immer per Hand festzulegen...

Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
matlabprofi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.02.2012, 15:20     Titel: Matlab GUI frei positionieren - Lösung
  Antworten mit Zitat      
Hallo,

das Problem ist, dass nach dem Start der GUI, der Befehel movegui.m (C:\Program Files\MATLAB\R2011b\toolbox\matlab\uitools\movegui.m) aufgerufen wird.

Lösung:
In den Ordner der eigenen GUI-Files (.fig, .m) einfach eine Matlab-Datei

movegui.m

anlegen mit dem "leeren" Inhalt

function movegui(varargin)

oder Anhang runterladen.

Erklärung:
movegui soll verhindern, dass abgespeicherte Figures außerhalb des sichtbaren Bildschirm (wechsel von einem Rechner auf einen anderen) dargerstellt wird.

Diese öffnet erst selbst weit außerhalb des Blidschirmbereichs das (GUI-)Figure. Speichert die Datenstruktur und schließt das Figure. Anschließend wird nur die Datenstruktur geladen.

in movegui.m steht

f=figure('position', [10000, 10000, 400, 300]);
% set(f, 'CreateFcn', 'movegui')
% hgsave(f, 'onscreenfig')
% close(f)
% f2 = hgload('onscreenfig')

dann wird der CallBack für movegui.m in das Figure gesetzt.

set(gcf, 'CreateFcn', @movegui)

Noch kurz vorm Anzeigen des Figures wird movegui.m von der Figure selbst aufgerufen, wodurch verhindert wird, dass das Figure irgenwor außerhalb des Bildschirms angezeigt wird - z.B. set(gcf,'Position',[-100000 -1000 2000 20000]). Der Benutzer sieht es nicht und kann es nur ei aktiviertem Fenster(Figure) mit alt+F4 oder close(hfig) schließen.

Mittels einer movegui.m Funktion im eigenen Ordner wird diese priorisiert aufgerufen. Da diese keinen wesentlichen Inhalt aufweisst, wird eben nichts mehr beschränkt.

Beispiel:

Im Anhang Dateien fleXControl.m, fleXControl.fig und movegui.m runterladen in einen Ordner. In Matlab Command guide eingeben und das
fleXControl.fig laden und (play) anklicken. Im Property Fenster des Figures sind die Eigenschaften "Position" entsprechend eingestellt.

Viel Erfolg.

fleXControl.m
 Beschreibung:
In eigenen GUI-Ordner kopieren

Download
 Dateiname:  fleXControl.m
 Dateigröße:  4.09 KB
 Heruntergeladen:  591 mal
fleXControl.fig
 Beschreibung:
In eigenen GUI-Ordner kopieren

Download
 Dateiname:  fleXControl.fig
 Dateigröße:  2.24 KB
 Heruntergeladen:  508 mal
movegui.m
 Beschreibung:
In eigenen GUI-Ordner kopieren

Download
 Dateiname:  movegui.m
 Dateigröße:  28 Bytes
 Heruntergeladen:  585 mal
 
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.