Pygame无边界开口有一些偏移

时间:2015-06-20 03:27:20

标签: python pygame

当我尝试打开无边框模式窗口时,它会从屏幕的右上角开始。它看起来像这样:http://puu.sh/ivB4y/304018da5e.jpg代码看起来像这样

if __name__ == "__main__":
    import source.Game, pygame
    pygame.mixer.pre_init(22050, 16, 2, 256)
    pygame.font.init()
    pygame.init()
    screen = pygame.display.set_mode((1920, 1080), pygame.NOFRAME)
    source.Game.Game().main(screen)

值得注意的是,我正在运行两个显示器,但我只尝试运行一个,问题仍然存在,如果我将分辨率降低到低于原生状态,它仍然不会在右上角开始我的屏幕。

有没有办法解决这个问题?

编辑:

我从未来的任何人那里得到了答案。

import os
os.environ['SDL_VIDEO_WINDOW_POS'] = "0,0"
screen = pygame.display.set_mode((1920, 1080), pygame.NOFRAME)

以及所有其他.init()语句和诸如此类的东西。

1 个答案:

答案 0 :(得分:1)

看起来你想要全屏:

screen = pygame.display.set_mode((1920, 1080), pygame.FULLSCREEN)

如果您正在全屏运行,您可能还想使用pygame.HWSURFACE | pygame.DOUBLEBUF打开硬件加速和双缓冲。

display.set_mode文档:https://www.pygame.org/docs/ref/display.html#pygame.display.set_mode

如果你真的想要在屏幕上保留操作系统的栏,那么理想情况下你可以在创建后最大化窗口,而不是全屏。但是,构建Pygame的SDL库版本不支持最大化操作(SDL 2)。显然,您可以通过在初始化窗口(yuck)之前设置环境变量来控制窗口的位置,但您仍需要弄清楚桌面的可用区域。 Example

import os
os.environ['SDL_VIDEO_WINDOW_POS'] = "0,0"

import pygame
pygame.init()
screen = pygame.display.set_mode((100,100))