2010-11-09 1093 views
4

我需要之後我創建了一個pygame的窗口中的窗口位置:pygame的顯示位置

window = pygame.display.set_mode((width, height), 0, 32) 
pygame.init() 

默認情況下,窗口開始於0,0 - 但如果用戶改變了窗口,我還需要X,Y位置。有任何想法嗎?

+0

如果用戶移動窗口,您需要x,y座標嗎?對?或者您想在窗口初始化時設置自己的座標? – user225312 2010-11-09 16:41:50

+0

我認爲這在Pygame中是不可能的。 – 2010-11-09 17:27:04

回答

4

有一個pygame.display.get_wm_info()調用可以讓你獲得Window處理程序 - 從此,它使用X11或Windows API32通過該處理程序從窗口獲取信息。我沒有找到任何現成的信息如何做到這一點。

所以 - 要明確一點:在pygame中沒有普通的方法。在獲得窗口處理程序後,必須使用另一個庫進行處理,可能使用ctypes。另一方面,如果你必須操作窗口本身,也許pygame不是最適合你使用的庫 - 你可以嘗試PyQt甚至GTK + - 它們也提供了多媒體功能,同時更適合於在GUI Windows和其他控件的級別上運行。

2

(0,0)無論窗口是否移動,都保持左上角。如果您想在窗口初始化時使(0,0)保持在屏幕上的位置,我不認爲pygame可以做到這一點。如果你想要更清晰的答案,儘量讓你的問題更清楚。

4

我需要pygame窗口的x,y座標 - 無論是在開始或窗口移動。最後一個很好。

我想出如何在屏幕的底部中心Pygame的窗口:

pos_x = screen_width/2 - window_width/2 
    pos_y = screen_height - window_height 
    os.environ['SDL_VIDEO_WINDOW_POS'] = '%i,%i' % (pos_x,pos_y) 
    os.environ['SDL_VIDEO_CENTERED'] = '0' 

背景:我有X,Y COORDS這是屏幕相關的,我必須在屏幕COORDS轉換成窗口局部以便我可以使用它們,例如在pygame窗口中顯示座標或丟棄pygame窗口外的座標。

用我上面的方法,我知道了初始位置。但是我只能使用一個pygame窗口(因爲它總是處於相同的位置),並且如果用戶移動窗口,則會出錯。