Erkennen der Auflösung
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.
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.
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 hat geschrieben:Selbst mit Tkinter wird's problematisch, weil es heute ja alle möglichen Konfigurationen an Grafikkarten und Monitoren (*Mehrzahl!*) gibt.
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.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.
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.
Das ist nur ein Ausschnit. Ich habe diesen Code ergänzt
[EDIT] Weiß jemand ob das in Pygame geht?
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()
[EDIT] Weiß jemand ob das in Pygame geht?
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.
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"