python - 使用 Python 3 将 Arcade 中的窗口居中

标签 python python-3.x arcade

我正在使用街机模块编写游戏,但不知道如何将窗口居中,以便它直接出现在屏幕中间而不是左上角。 我当前创建窗口的代码如下:

class MyGame(arcade.Window):
    def __init__(self, width, height):
        super().__init__(width, height, "Pong!")
        arcade.set_background_color(arcade.color.BLACK)

完成这个类的方法后,我的主要功能是:

def main():
    """ Main method """
    game = MyGame(SCREEN_WIDTH, SCREEN_HEIGHT)
    arcade.run()

编辑:重新措辞几个句子以更好地解释问题

最佳答案

我在任何地方都找不到这个,所以这就是我的想法,以防其他人需要这个:

arcade 模块是在 pyglet 模块之上编写的,因此您可以使用 pyglet 类 pyglet.canvas.Screen找到屏幕尺寸,然后使用 arcade.Window.set_location(x, y)设置窗口位置。因此,首先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)

只需在初始化期间或游戏窗口需要居中时调用 MyGame.center_on_screen() 即可。

关于python - 使用 Python 3 将 Arcade 中的窗口居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52459123/

相关文章:

python - MySQL python 查询从列中提取数据

具有 3 个参数的 Python 的 `range` 函数

python - Pandas 对于多索引有什么样的合并、连接或连接

python - pandas.DataFrame.copy(deep=True) 实际上并没有创建深拷贝

python - 为什么 Python 会自动将字符串中的十六进制编码为 UTF-8?

python-3.x - 从单词列表中查找给定句子的字谜词

python - 调用 sys.exit() 后不触发 atexit

python - 如何使用 .jpg 或 .png 作为背景图片?