web-dev-qa-db-fra.com

Comment puis-je obtenir la taille (largeur x hauteur) de ma fenêtre pygame

J'ai créé une fenêtre en utilisant

pygame.display.set_mode((width, height), 
                        pygame.OPENGL | pygame.DOUBLEBUF | pygame.RESIZABLE)

Plus tard dans l'application, je veux pouvoir demander à cette fenêtre sa largeur et sa hauteur afin de pouvoir décider de la façon de traiter la position de la souris.

Comment accéder aux dimensions de cette fenêtre pygame ailleurs dans le programme? (boucle de traitement des événements)

7
Mutant Bob

Vous voulez obtenir la surface, puis obtenir la taille de l'objet de surface.

Utilisation du décompression de Tuple:

w, h = pygame.display.get_surface().get_size()

12
Will

Vous pouvez obtenir la taille de la fenêtre en obtenant d’abord la surface d’affichage. pygame.display.get_surface (), puis appelez get_width ()/get_height () à la surface.

5
Jacob Persi

Comme ça!

surface = pygame.display.get_surface() #get the surface of the current active display
x,y = size = surface.get_width(), surface.get_height()#create an array of surface.width and surface.height
3
TheLazyScripter

Ajouter une autre réponse puisque je n'ai pas encore vu celui-ci.

screen = pygame.display.set_mode() # Default to screen resolution.

area = screne.get_rect()

Nous pouvons appeler get_rect () à l'écran car c'est un objet de surface. Area sera un objet Rect, avec des informations (0, 0, largeur, hauteur).

2
David Jay Brady
changed = False
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit(0)
        if event.type == pygame.VIDEORESIZE:
            scrsize = event.size  # or event.w, event.h
            screen = pygame.display.set_mode(scrsize,RESIZABLE)
            changed = True

c'est presque exactement comme cela dans les commentaires de la page doc de pygame.display.init https://www.pygame.org/docs/ref/display.html#comment_pygame_display_update édité seulement légèrement à partir de 2011- 01-25T23: 10: 35 - Dave Burton remercie Dave

1
import pygame as pg
def create_window(width, height):
    """create a width x height resizable window/frame"""
    win = pg.display.set_mode((width, height), pg.RESIZABLE)
    # optional fill bg red, default is black
    win.fill((255, 0, 0))
    # optional title info
    sf = "size x=%s  y=%s" % (width, height)
    pg.display.set_caption(sf)

    # any extra code here ...
    # draw a white circle
    white = (255, 255, 255)
    # center can be fixed or calculated for resize
    center = (150, 150)
    radius = 100
    pg.draw.circle(win, white, center, radius)

    pg.display.flip()
    return win
pg.init()
width = 300
height = 200
win = create_window(width, height)
# event loop and exit conditions (windows titlebar x click)
while True:
    for event in pg.event.get():
        if event.type == pg.VIDEORESIZE:
            width, height = event.size
            # redraw win in new size
            win = create_window(width, height)
            print(win.get_size())  # test
        if event.type == pg.QUIT:
            raise SystemExit

Essayez ceci.

J'espère que ça aide.

1
Akash Vartak

gameDisplay = pygame.display.set_mode ((800,600))

x = gameDisplay.get_width ()

y = gameDisplay.get_height ()

0
samet kaya