web-dev-qa-db-ja.com

pygameウィンドウのサイズ(幅x高さ)を取得する方法

を使用してウィンドウを作成しました

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

後でアプリの中で、そのウィンドウの幅と高さを確認できるようにして、マウスの位置を処理する方法を決定できるようにします。

プログラムの他の場所でそのpygameウィンドウのサイズにアクセスするにはどうすればよいですか? (イベント処理ループ)

11
Mutant Bob

表面を取得してから、表面オブジェクトからサイズを取得します。

タプルの解凍を使用する:

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

17
Will

最初に表示面を取得することで、ウィンドウサイズを取得できます。 pygame.display.get_surface()、次にサーフェスでget_width()/ get_height()を呼び出します。

6
Jacob Persi

このような!

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
4
TheLazyScripter
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.display.initのドキュメントページのコメントでほぼ同じです https://www.pygame.org/docs/ref/display.html#comment_pygame_display_update 2011-01からわずかに編集されました- 25T23:10:3​​5-デイブバートン、デイブに感謝

これはまだ見ていないので、別の答えを追加します。

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

area = screen.get_rect()
_

サーフェスオブジェクトなので、画面上でget_rect()を呼び出すことができます。 areaは、(0、0、幅、高さ)情報を含むRectオブジェクトになります。

3
David Jay Brady
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

これを試してみてください。

それが役に立てば幸い。

3
Akash Vartak

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

x = gameDisplay.get_width()

y = gameDisplay.get_height()

1
samet kaya