Erkennen der Auflösung

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
GiseLHeR
User
Beiträge: 13
Registriert: Dienstag 22. Januar 2008, 20:34

Ich würde gerne wissen wie man die Auflösung des Bildschrimes mit Python herausfinden kann? Weil bei Pygame bei 16:9 bei Vollbild verzeert wird.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

"Mit Python" ist zu unspezifisch.

Wie es mit Tkinter geht, könnte ich dir verraten. Aber vermutlich hilft dir das nicht, weil du von PyGame sprichst. :cry:
BlackJack

Selbst mit Tkinter wird's problematisch, weil es heute ja alle möglichen Konfigurationen an Grafikkarten und Monitoren (*Mehrzahl!*) gibt.

Ich würde den Benutzer einfach wählen lassen. Wenn Pygame in den Vollbildschirm geht, gibt's nämlich auch wieder verschiedene Möglichkeiten *wie* das passiert. Unter anderem kann es davon abhängen was für Auflösungen die Grafikkarte bzw. deren Treiber unterstützt. Wenn man also die aktuelle Auflösung abfragt, kann es trotzdem passieren, dass bei Vollbildschirm eine ganz andere gewählt wird.
lunar

BlackJack hat geschrieben:Selbst mit Tkinter wird's problematisch, weil es heute ja alle möglichen Konfigurationen an Grafikkarten und Monitoren (*Mehrzahl!*) gibt.
Ja und? Die muss das Programm ja nicht selbst abfragen, dass ist Sache des X-Servers. Und der gibt diese Informationen lieb und brav an neugierige Anwendungen weiter. Unter Qt kann man mit QDesktopWidget wunderbar die Auslösung der angeschlossenen Monitore abfragen.
BlackJack

Aber diese Information, die da brav zurückgegeben wird, ist eventuell gar nicht die gewünschte bzw. führt im Endeffekt zu unerwünschten Ergebnissen. Zum Beispiel Dialoge die genau in der Mitte platziert werden, also jeweils nur halb auf jedem Bildschirm stehen.
lunar

BlackJack hat geschrieben:Aber diese Information, die da brav zurückgegeben wird, ist eventuell gar nicht die gewünschte bzw. führt im Endeffekt zu unerwünschten Ergebnissen. Zum Beispiel Dialoge die genau in der Mitte platziert werden, also jeweils nur halb auf jedem Bildschirm stehen.
X verwaltet die Auflösung für jeden Bildschirm einzeln, und zumindest QDesktopWidget spiegelt das auch wieder.
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

Ich bin gerade auch auf der Suche nach einer Antwort und bin hier fündig geworden
http://python-xlib.sourceforge.net/doc/ ... html#SEC15

Damit lässt sich zumindest für Linux via Xlib die Auflösung ermitteln. Ob es platformunabhängig über Pygame geht weiß ich noch nicht.

Ich hab hier mal einen Codeschnipsel den ich aber nur mit einem Monitor getestet hab.

Code: Alles auswählen

# Application window (only one)
class Window:
    def __init__(self, display):
        self.d = display
        self.objects = []

        # Find which screen to open the window on
        self.screen = self.d.screen()
        self.x = self.screen.width_in_pixels 
        self.y = self.screen.height_in_pixels 
        print self.x
        print self.y

if __name__ == '__main__':
    Window(display.Display()).loop()
Das ist nur ein Ausschnit. Ich habe diesen Code ergänzt

[EDIT] Weiß jemand ob das in Pygame geht?
10111
User
Beiträge: 22
Registriert: Samstag 21. Februar 2009, 01:34

Hallo,

bin zwar neu hier, aber ich stand vor einem ähnlichen Problem. Dabei bin ich in pygame auf pygame.display.list_modes() gestoßen. Das gibt eine Liste mit Tupeln zurück, in denen die möglichen Auflösungen stehen. Das erste Tupel ist dabei i.d.R. die maximale Auflösung des Monitors. Daraus ließe sich glatt errechnen, ob man einen Widescreen hat oder nicht.

Code: Alles auswählen

import pygame

pygame.init()

screenwidth = pygame.display.list_modes()[0][0]
screenheight = pygame.display.list_modes()[0][1]
ratio = screenheight * 100 / screenwidth

if ratio in (75, 80):
    print "normaler Monitor"
else
    print "Widescreen"
Antworten