如何指定pygame创建游戏窗口的位置

11

有没有办法控制pygame创建游戏屏幕的位置?它似乎总是在同一区域创建,但不在固定位置。


能否共享您的代码,以便我们更好地评估您的问题? - joce
在我导入模块之后,我运行了这段代码:games.init(screen_width = 908, screen_height = 683, fps = 60)。 - Paul Ronjak
2个回答

24
import os  

os.environ['SDL_VIDEO_WINDOW_POS'] = str(position[0]) + "," + str(position[1])

根据 http://pygame.org/wiki/FrequentlyAskedQuestions 的说法

你也可以使用以下代码居中显示屏幕:

import pygame, os 

os.environ['SDL_VIDEO_CENTERED'] = '1'

注意,在主循环中初始化pygame之前应该完成这些操作。例如,我在导入os之后就立即执行这些操作。由于它们实际上不是pygame的一部分,因此您可能可以在其他地方使用它们,尽管像gtk和wxpython这样的东西提供了它们自己的机制。


1
对于第一段代码,它说“position”未定义,而对于第二段代码,我无法看出它做了任何事情。 - Paul Ronjak
当然。position[0]和position[1]是占位符,表示在那里期望有什么;一种用户变量的形式。正如Noufal Ibrahim所说,如果你的窗口管理器不合作,它就不会起作用。在我的情况下,在gnome桌面环境中与compiz测试正常。 - Alan

8

窗口的定位不是由客户端应用程序处理的。它由窗口管理器(如metacity等)处理。

PyGame所基于的SDL库确实有一些环境变量,可以用来向窗口管理器提供提示。这些提示可能会被 WM 忽略,但这是你能做的最好的事情。

这里的评论示例


好的,我想那回答了我的问题。我正在为期末项目制作一个游戏,计划添加一个开始菜单。当菜单出现时,如果需要,玩家只需重新定位屏幕即可。 - Paul Ronjak
或者你可以将其设为全屏。 :) - Noufal Ibrahim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接