Как получить размер (ширина x высота) моего окна pygame

Я создал окно с помощью

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

позже в приложении я хочу иметь возможность задать этому окну его ширину и высоту, чтобы я мог решить, как обрабатывать положение мыши.

Как получить доступ к измерениям этого окна pygame в другом месте программы? (цикл обработки событий)

6 ответов


вы хотите получить поверхность, а затем получить размер от объекта поверхности.

использование распаковки кортежа:

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


вы можете получить размер windows, сначала получив поверхность дисплея. которым Pygame.дисплей.get_surface (), затем вызов get_width () / get_height () на поверхности.


такой!

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

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

попробуйте это.

надеюсь, что это помогает.


добавление другого ответа, так как я еще не видел этого.

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

area = screne.get_rect()

мы можем вызвать get_rect () на экране, потому что это поверхностный объект. Область будет объектом Rect с информацией (0, 0, width, height) в нем.


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

это почти точно так же, как в комментариях к pygame.дисплей.init doc страница https://www.pygame.org/docs/ref/display.html#comment_pygame_display_update отредактировано только немного с 2011-01-25T23:10: 35 - Дэйв Бертон спасибо Дэйв