Seite 1 von 1

Frame an Auflösung anpassen

Verfasst: Freitag 30. Oktober 2009, 12:45
von mathi
Hallo zusammen,

ich habe einen Bildschirm mit einer Auflösung 1920x1200, dafür habe ich eine Frame size (900,870) gewählt. Sieht gut aus, passt alles drauf.

Wenn ich das Programm dann auf meinem Laptop starte (Auflösung 1600x900) ist der Frame zu groß.

Kann ich das irgendwie automatisieren, dass der Frame beim Start mit der Auflösung skaliert? Ich möchte den Frame aber auf keinen fall maximieren...

Verfasst: Freitag 30. Oktober 2009, 13:52
von jbs

Verfasst: Freitag 30. Oktober 2009, 14:08
von mathi
vielen Dank,
aus Interesse: was hast Du bei Google eingegeben??

Verfasst: Freitag 30. Oktober 2009, 14:18
von Rebecca
Aufgepasst, wenn man zwei Monitore betreibt:

Code: Alles auswählen

>>> import wx
>>> a = wx.App(0)
>>> wx.GetDisplaySize() 
wx.Size(3040, 1200)
>>> wx.Display().GetGeometry()
wx.Rect(0, 0, 1600, 1200)
>>> wx.Display().ClientArea
wx.Rect(0, 0, 3040, 1200)
>>> 

Verfasst: Freitag 30. Oktober 2009, 14:48
von mathi
also wäre wx.Display().ClientArea die beste Wahl??

Dann hätte ich ja die Größe des momentan aktiven Bildschirms.

Verfasst: Freitag 30. Oktober 2009, 15:07
von Rebecca
Wohl eher nicht. Die 3040 ist bei mir die Breite des virtuellen Screens, also beide Monitore zusammen; die 1600 ist die Breite des externen Monitors (auf dem ich das Script laufen hatte).

An die Aufloesung des internen Monitors komme ich so gar nicht, auch wenn ich das Script auf ihm laufen lasse. Mmmh... Ausserdem koennte das auch alles wieder anders sein, wenn man andere Betriebssysteme/andere Unterstuetzung fuer mehrere Monitore verwendet...

Verfasst: Freitag 30. Oktober 2009, 15:46
von HWK
Diesen Thread schon gesehen?
MfG
HWK

Verfasst: Freitag 30. Oktober 2009, 15:55
von Rebecca
Ah, das dort gepostete Script liefert bei mir:

Code: Alles auswählen

wxDisplay:
display count: 2
Display 0
	(0, 0, 1600, 1200)
	(0, 0, 3040, 1200)
Display 1
	(1600, 0, 1440, 900)
	(1600, 0, 1440, 900)
Schonmal nicht schlecht, obwohl ich's noch nicht ganz genau verstehe...

Verfasst: Freitag 30. Oktober 2009, 19:51
von mathi
hmmm, scheint gar nicht so einfach, ich werde es so machen, dass ich bei mehr als einem Monitor den aktiven nehme.

>>> d = wx.Display()
>>> d.GetCount()
2
>>> d.Geometry
wx.Rect(0, 0, 1280, 1024)
>>> d.ClientArea
wx.Rect(0, 0, 1280, 994)
>>> d.IsPrimary()
True

Schaun wir mal, ob es im Einzelfall damit ein Problem gibt.....

Danke erstmal soweit :-)