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

GUI Größe

 

peerro
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 17.12.08
Wohnort: ---
Version: R2008b
     Beitrag Verfasst am: 15.07.2009, 18:07     Titel: GUI Größe
  Antworten mit Zitat      
Hallo,

ich hab folgendes Problem: Ich hab auf nem großen Bildschirm nen GUI programmiert, der den Bildschirm auch ziemlich ausfüllt. Versuche ich nun, den GUI auf nem kleineren Bildschirm zu verwenden (z.B. auf einem Notebook), so passt der GUI nicht auf den Bildschirm und es sind Teile nicht sichtbar. Welche Lösungsmöglichkeiten gibt es für dieses Problem? Ich hätte eigentlich gedacht, dass Scrollbalken erscheinen, sobald der GUI nicht auf den Bildschirm passt.

Danke im voraus,
Peer
Private Nachricht senden Benutzer-Profile anzeigen


steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.029
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2024a
     Beitrag Verfasst am: 15.07.2009, 18:13     Titel:
  Antworten mit Zitat      
Moin,

du kannst dir mittels
Code:
get(0,'screensize')
die Auflösung des Bildschirms geben lassen und damit die Elemente anpassen. Auch die ResizeFcn könnte hilfreich sein.

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
 
peerro
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 17.12.08
Wohnort: ---
Version: R2008b
     Beitrag Verfasst am: 15.07.2009, 21:51     Titel:
  Antworten mit Zitat      
Danke, werd mal probieren, ob ich damit weiterkomme.
Private Nachricht senden Benutzer-Profile anzeigen
 
Dagnabit
Forum-Century

Forum-Century


Beiträge: 244
Anmeldedatum: 23.04.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.07.2009, 06:58     Titel:
  Antworten mit Zitat      
Servus peerro

Die von Alex erwähnte ResizeFcn ist die sauberste/ schönste Lösung.
Es wird aber mit zunehmender Anzahl von Objekten auf Deinem GUI aufwendig diese zu programmieren.

Eine Alternative, die aber nicht immer ein schönes Bild ergibt, ist die Verwendung von Units = normalized. Mit normalized wird das GUI immer !relativ! auf die Bildschirmgröße gepasst.
Die Verwendung von Panels erleichtert dabei die Erstellung Deines GUI´s. Änderung im Design Deines GUI lassen sich mit Panels auch besser durchführen.
_________________

lg
Martin
Private Nachricht senden Benutzer-Profile anzeigen
 
peerro
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 17.12.08
Wohnort: ---
Version: R2008b
     Beitrag Verfasst am: 16.07.2009, 08:09     Titel:
  Antworten mit Zitat      
Hallo Martin,

danke auch dir für die Hinweise. Ich glaube, da muss ich mich nochmal eingehender mit befassen. Der GUI, um den es sich hier dreht, ist mein erster größerer mit guide erstellter GUI, bin also hier noch ziemlich unerfahren. Zwar benutze ich Panels, ich muss mir dann aber nochmal klarmachen, wie sich Größenänderungen des GUIs auf die Elemente des GUIs auswirken.

Da hilft wohl nur ein bisschen rumspielen Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.029
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2024a
     Beitrag Verfasst am: 16.07.2009, 08:24     Titel:
  Antworten mit Zitat      
Moin,

wenn du panels benutzt ist es "relativ" einfach. Die Größe der Panels hängt von der Größe des Fensters ab. Und die Größe der Objekte in den Panels ist relativ zur Größe des jeweiligen Panels. Das heißt das Verhältnis von Fenster zu Panel bleibt immer gleich und das Verhältnis von den Objekten zu den Panels bleibt gleich.

Aber probieren geht hier über studieren Wink

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
 
peerro
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 17.12.08
Wohnort: ---
Version: R2008b
     Beitrag Verfasst am: 17.07.2009, 12:19     Titel:
  Antworten mit Zitat      
Hallo Jungs,

ich hab jetzt mal ein bisschen mit dem GUI rumgespielt. Ich habe das Property "Units" im GUI mit Hilfe von Guide auf "normalized" gesetzt. Außerdem habe ich unter "GUI"-Options die "Resize Behavior" auf "Proportional" gesetzt.

Grundsätzlich geht das schon in die richtige Richtung. Ich kann den GUI kleiner machen und die Elemente werden vernünftig gestaucht. Nun aber zum verbleibenden Problem, wo ich immer noch nicht durchblicke: Kann man dem GUI denn keine Scrollbalken verpassen? Das Kernproblem liegt nämlich darin, dass ich den GUI mit guide auf nem großen Display programmiert habe. Wenn ich das .fig-File nun auf meinem deutlichen kleineren Notebook mit guide öffne, fehlen leider im oberen Teil des GUIs schon Elemente, auf die ich auch nicht auf irgendeine (mir ersichtliche) Art und Weise zugreifen kann. Warum auch immer. Hab ich da irgendwie Tomaten auf den Augen oder handelt es sich hier um eine grundsätzliche Sackgasse, in die ich mich begeben habe?
Private Nachricht senden Benutzer-Profile anzeigen
 
Dagnabit
Forum-Century

Forum-Century


Beiträge: 244
Anmeldedatum: 23.04.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.07.2009, 12:47     Titel:
  Antworten mit Zitat      
Servus peerro

Diese Sache hat Alex weiter oben schon angesprochen.

Pflanze einen der folgenden Codes in Deine Opening- function, und das Figure- Window wird angepasst

Code:
msz  = get( 0,   'MonitorPosition');
temp = get( gcf, 'Units');
set( gcf, 'Units', 'Pixels',...
          'OuterPosition', [msz(3)*0.05 msz(4)*0.1 msz(3)*0.9 msz(4)*0.85]);
set( gcf, 'Units', temp);




Code:
ssz  = get(0,'screensize');
temp = get( gcf, 'Units');
set( gcf, 'Units', 'Pixels',...
          'OuterPosition', [ssz(3)*0.05 ssz(4)*0.1 ssz(3)*0.9 ssz(4)*0.85]);
set( gcf, 'Units', temp);


In beiden Fällen wird das Fenster zentriert am Bildschirm dargestellt.
Die Zahlenangaben in 'Outerposition' sind Prozentangaben und reduzieren die Größe des GUI -> es bleibt runderhum ein Rand.
_________________

lg
Martin
Private Nachricht senden Benutzer-Profile anzeigen
 
peerro
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 17.12.08
Wohnort: ---
Version: R2008b
     Beitrag Verfasst am: 17.07.2009, 13:29     Titel:
  Antworten mit Zitat      
Hallo Martin,

danke für die schnelle Response. Ich habe den Code so eingeben, hat aber nicht funktioniert, da er mir dann immer ein figure-Fenster aufgemacht hat. Ich war dann mal so frei den Code wie folgt abzuändern:

Code:
function varargout=fra_gui_OpeningFcn(hObject, eventdata, handles, varargin)

...

ssz    = get(0,'screensize');
temp = get( hObject, 'Units');
set( hObject, 'Units', 'Pixels',...
       OuterPosition', [ssz(3)*0.05 ssz(4)*0.1 ssz(3)*0.9 ssz(4)*0.85]);
set( hObject, 'Units', temp);


Damit komme ich der Lösung zumindest ein Stück weit näher. Das eigentliche Problem bleibt aber leider weiterhin bestehen. Am oberen Rand des GUIs fehlen einige Elemente. Das Problem ist ja auch, dass ich diese Elemente auch mit guide (auf meinem Notebook wohlgemerkt) nicht angezeigt bekomme, also sowohl in guide als auch im eigentlichen GUI-Fenster wird oben abgeschnitten.

Ich vermute mal, ich komme in diesem Fall nicht umhin, den GUI mit guide auf meinem großen Monitor so zu verkleinern, dass er zunächst erstmal auch auf meinem Notebook ganz auf den Bildschirm passt, so dass ich auch dort alle Elemente angezeigt bekomme und diese dann auch bearbeiten kann.

Allerdings kann ich mir immer noch nicht vorstellen, dass das der Weissheit letzter Schluss ist. Ich stelle mir gerade vor, dass ich irgendeinen GUI programmiere und ihn dann z.B. auf nem Netbook mit Minidisplay laufen lassen will. Da stoße ich doch immer wieder auf das gleiche Problem...

edit by steve: Bitte die Code-Umgebung verwenden!!!
Private Nachricht senden Benutzer-Profile anzeigen
 
Dagnabit
Forum-Century

Forum-Century


Beiträge: 244
Anmeldedatum: 23.04.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.07.2009, 13:43     Titel:
  Antworten mit Zitat      
Servus peerro

hObject ist ne gute Idee. Idea

Was Deine Elemente innerhalb des GUI betrifft - Panels- und alles was geht normalized!
Wenn Du das Fenster um die Hälfte verkleinerst, werden alle Panels innerhalb des GUI um die Hälfte verkleinert. Und innerhalb der panels werden dann auch alle Elemente um die Hälfte geschrumpft. Aber nur wenn alles 'normalized' ist!!!!
Problem: Schriftgröße; Wenn die Elemente eine gewisse Größe unterschreiten wird die Beschriftung abgeschnitten.

Vielleicht hilft Dir auch das:
http://blogs.mathworks.com/desktop/.....nce-of-layout-management/
_________________

lg
Martin
Private Nachricht senden Benutzer-Profile anzeigen
 
peerro
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 17.12.08
Wohnort: ---
Version: R2008b
     Beitrag Verfasst am: 17.07.2009, 15:28     Titel:
  Antworten mit Zitat      
Hallo Martin,

sehr interessanter Link. Ich glaub mit vereinten Kräften haben wir's geschafft, das Ding scheint jetzt in etwa so zu laufen, wie ich mir das vorgestellt habe. Leider schmiert mein Matlab grad dauernd ab, ausgiebigere Tests verschiebe ich daher erstmal... Wink
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
.





 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.