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)
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()
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.
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
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).
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
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.
gameDisplay = pygame.display.set_mode ((800,600))
x = gameDisplay.get_width ()
y = gameDisplay.get_height ()