2016-04-15 8 views
3

私のpygameのウィンドウのサイズ(幅×高さ)を取得します私はマウスの位置をどのように処理するかを決めることができます。は、どのように私は私がそのウィンドウにその幅と高さを尋ねることができるようにしたいアプリの後半で</p> <pre><code>pygame.display.set_mode((width, height), pygame.OPENGL | pygame.DOUBLEBUF | pygame.RESIZABLE) </code></pre> <p>を使用してウィンドウを作成した

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

+0

私は既に完全に質問に答えてきましたが、私はpygameウィンドウを作成して使用するためにpython/pygameモジュールを開発しました。それは非常に使いやすいです!既存のモジュールを使用するのではなく、独自のモジュールを使用するかどうかチェックしてください。このモジュールは現在、ウィンドウのみをサポートしています! https://github.com/TheLazyScripter/JTM-Pygame-Screen-Module/tree/master/JTM – TheLazyScripter

答えて

9

サーフェスを取得したい場合は、サーフェスオブジェクトからサイズを取得します。タプルのアンパック使用

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

5

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

3

このように!

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 
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 

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

希望します。

+0

残念ながら、私はOpenGLライブラリを使用していますので、サイズを調整するとOpenGLのコンテキストが何とか壊れることがわかりました。最終的に私はそれにどのように対処すべきかを理解するために掘り下げます。 –

+0

回答は役に立ちましたか? –

+0

Willの答えが自分のコード・アーキテクチャーに最もよく一致しました。 –

1

もう1つの回答を追加していますが、これはまだ見たことがありません。

表面オブジェクトであるため、画面上でget_rect()を呼び出すことができます。 Areaは(0、0、width、height)情報を持つRectオブジェクトになります。

+1

インターネットPygame.Rectを使うためのポイントです。この構造はPyGame環境で非常に便利です。 – Will

関連する問題

 関連する問題