Как получить размер (ширина 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 - Дэйв Бертон спасибо Дэйв