在 Arcade 中以 Python 居中 window 3
Centering a window in Arcade with Python 3
我正在使用 arcade 模块编写游戏代码,但不知道如何将 window 居中,所以它直接出现在我屏幕的中间而不是左上角。
我当前创建 window 的代码如下:
class MyGame(arcade.Window):
def __init__(self, width, height):
super().__init__(width, height, "Pong!")
arcade.set_background_color(arcade.color.BLACK)
完成这个class的方法后,我的主要功能是:
def main():
""" Main method """
game = MyGame(SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()
编辑:重新措辞几个句子以更好地解释问题
我在任何地方都找不到这个,所以这是我想出来的,以防其他人需要这个:
arcade模块写在pyglet模块之上,所以可以使用pyglet class pyglet.canvas.Screen
to find the screen size and then use arcade.Window.set_location(x, y)
设置window位置。所以首先 import pyglet
,然后你可以从当前 Display
:
得到你正在使用的 Screen
import pyglet
# set up the screen
SCREEN_NUM = 0
SCREENS = pyglet.canvas.Display().get_screens()
SCREEN = SCREENS[SCREEN_NUM]
(如果您使用多台显示器,可以更改SCREEN_NUM
。)
然后在MyGame
里面,可以加上这个方法:
def center_on_screen(self):
"""Centers the window on the screen."""
_left = SCREEN_WIDTH // 2 - self.width // 2
_top = SCREEN_HEIGHT // 2 - self.height // 2
self.set_location(_left, _top)
只需在初始化期间或游戏 window 需要居中的任何时候调用 MyGame.center_on_screen()
。
我正在使用 arcade 模块编写游戏代码,但不知道如何将 window 居中,所以它直接出现在我屏幕的中间而不是左上角。 我当前创建 window 的代码如下:
class MyGame(arcade.Window):
def __init__(self, width, height):
super().__init__(width, height, "Pong!")
arcade.set_background_color(arcade.color.BLACK)
完成这个class的方法后,我的主要功能是:
def main():
""" Main method """
game = MyGame(SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()
编辑:重新措辞几个句子以更好地解释问题
我在任何地方都找不到这个,所以这是我想出来的,以防其他人需要这个:
arcade模块写在pyglet模块之上,所以可以使用pyglet class pyglet.canvas.Screen
to find the screen size and then use arcade.Window.set_location(x, y)
设置window位置。所以首先 import pyglet
,然后你可以从当前 Display
:
Screen
import pyglet
# set up the screen
SCREEN_NUM = 0
SCREENS = pyglet.canvas.Display().get_screens()
SCREEN = SCREENS[SCREEN_NUM]
(如果您使用多台显示器,可以更改SCREEN_NUM
。)
然后在MyGame
里面,可以加上这个方法:
def center_on_screen(self):
"""Centers the window on the screen."""
_left = SCREEN_WIDTH // 2 - self.width // 2
_top = SCREEN_HEIGHT // 2 - self.height // 2
self.set_location(_left, _top)
只需在初始化期间或游戏 window 需要居中的任何时候调用 MyGame.center_on_screen()
。