Auflösung? Systeminformationen?

Plattformunabhängige GUIs mit wxWidgets.
Antworten
Lonestar
User
Beiträge: 147
Registriert: Samstag 9. August 2008, 08:31

Hi, erst mal sorry für den dummen Threadtitel, irgendwie weiss ich gar nicht so richtig was ich suche. Also erst mal zu meinem Ist Stand:

Ich baue mir gerade mit wxPython eine kleine GUI für ein Programm das seinen Dienst bei mir in der Taskleiste erledigen soll. Für einige Statusmeldungen wollte ich mir mit ToasterBox Meldungen einblenden Lassen ähnlich wie das die meissten Instantmessanger heute schon machen. Das funktioniert soweit alles.
Mein Problem ist das die Startposition in absoluten Koordinaten auf dem Bildschirm angegeben werden ( hier steht zum Beispiel eine implementierung). Für meinen Bildschirm auf meinem Rechner ist das kein Problem. Ich habe die Positionen so bestimmt das die Meldungen oberhalb meiner Taskleiste (WinXp) starten.
Um nun bei einer anderen Auflösung zumindest am rechten Bildschirmrand mit meiner Box zu starten wäre eine Auflösung des Monitors wahrscheinlich praktisch zu wissen. Dazu kommen jetzt allerdings noch unglaublich viele Unbekannte - gibt es auf dem ausführenden System eine Taskleiste? ist sie vielleicht unten - dann würde ich gerne darüber starten. Ist die Taskleiste wo anders würde ich gerne ganz unten starten.... ich glaube das könnte man jetzt noch weiter fortsetzen.

Also meine Frage ist demnach was für Infrormationen kann ich mit python/wxPython über das ausführende System herausfinden die mir bei der Positionierung behilflich sein können? Ich hab schon ein wenig gegoogelt, und auch hier im Forum geguckt - aber mir scheinen nicht die richtigen Suchbegriffe einzufallen.
fhoech
User
Beiträge: 143
Registriert: Montag 9. April 2007, 18:26

Die wxWidgets Doku zu wxDisplay sollte weiterhelfen:
http://docs.wxwidgets.org/2.8.9/wx_wxdisplay.html

Und da sind folgende Methoden interessant:

Code: Alles auswählen

wx.Display.GetCount() # liefert Anzahl Displays
wx.Display(index=0).IsPrimary() # Display mit index=0 ist immer das primäre laut wxWidgets Doku
wx.Display(index=0).GetGeometry() # liefert Auflösung, z.B. wx.Rect(0, 0, 1600, 1200)
wx.Display(index=0).GetClientArea() # liefert nutzbare Fläche (ohne Taskleisten etc), z.B. wx.Rect(0, 22, 1600, 1178) (hier ist die Taskleiste oben)
Lonestar
User
Beiträge: 147
Registriert: Samstag 9. August 2008, 08:31

oh mann, so einfach das ichs einfach überlesen hatte. Besten Dank für den Tip. Damit sollte ich alles notwendige hinbekommen
Antworten