Python Pygame无边界开口,带有一些偏移量

Python Pygame无边界开口,带有一些偏移量,python,pygame,Python,Pygame,当我试图打开一个无边界模式窗口时,它确实从屏幕的右上角开始。看起来是这样的:代码看起来是这样的 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.

当我试图打开一个无边界模式窗口时,它确实从屏幕的右上角开始。看起来是这样的:代码看起来是这样的

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
启用硬件加速和双缓冲

显示。设置_模式
文档:

如果你真的想让操作系统的条显示在屏幕上,那么最好不要全屏显示,而是在创建窗口后最大化窗口。但是,Pygame构建的SDL库版本不支持最大化操作(SDL2支持)。显然,您可以通过在初始化窗口之前设置环境变量来控制窗口的位置(糟糕),但您仍然需要确定桌面的可用区域:


谢谢这很有效。我个人喜欢无边界模式,而不是全屏模式,因为它使切换更容易,所以我想把它包括在我的游戏中。此外,当全屏启动时,屏幕会变黑一秒钟,诸如此类。从我听到的情况来看,无边界模式对计算机来说更为繁重,但在我看来,它要好得多,我想给出一个选择。我很好奇,假设无边界模式是“全屏”即本机分辨率,您是否仍然建议对无边界模式使用双缓冲区和硬件加速?另一个侧记,当我这样做时,任务栏被无边界窗口覆盖,这是故意的。我不确定在窗口中使用HW accel是否是一个好主意,或者在Pygame中不是-我想你必须运行某种压力测试才能找到答案。也许可以尝试尽可能多的闪动精灵,看看有没有加速它跑得更快?我听说加速的好处不是直观的,至少在Pygame中是这样。
import os
os.environ['SDL_VIDEO_WINDOW_POS'] = "0,0"

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