Frame an Auflösung anpassen

Plattformunabhängige GUIs mit wxWidgets.
Antworten
mathi
User
Beiträge: 314
Registriert: Dienstag 27. November 2007, 14:30

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...
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
mathi
User
Beiträge: 314
Registriert: Dienstag 27. November 2007, 14:30

vielen Dank,
aus Interesse: was hast Du bei Google eingegeben??
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

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)
>>> 
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
mathi
User
Beiträge: 314
Registriert: Dienstag 27. November 2007, 14:30

also wäre wx.Display().ClientArea die beste Wahl??

Dann hätte ich ja die Größe des momentan aktiven Bildschirms.
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

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...
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Diesen Thread schon gesehen?
MfG
HWK
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

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...
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
mathi
User
Beiträge: 314
Registriert: Dienstag 27. November 2007, 14:30

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 :-)
Antworten