Pygame 有一些偏移的无边界开口

Pygame borderless opening with some offset

当我尝试打开无边框模式时 window 它确实从屏幕的右上角开始。看起来像这样: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() 语句和诸如此类的东西。

看起来你想要全屏:

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

如果您真的想在屏幕上保留 OS 的栏,那么最好在创建 window 之后将其最大化而不是全屏显示。但是,构建 Pygame 的 SDL 库版本不支持最大化操作(SDL 2 支持)。显然,您可以通过在初始化 window 之前设置环境变量来控制 window 的位置(糟糕),但是您仍然需要弄清楚桌面的可用区域。 Example:

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

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