首页 > 解决方案 > PyGame 在第二个屏幕上正常,但在笔记本电脑屏幕上显示黑屏

问题描述

我正在使用 PyGame 实现一个以全屏大小显示图像的代码。我的设置中有两个屏幕,一个显示器和一个笔记本电脑。当我运行我的代码以在显示器上显示时,一切正常,但是当我在笔记本电脑屏幕上尝试它时,出现崩溃,只显示黑屏。我的代码如下:

def open_window2(path, key):
    # key dict
    key_dict={'a':K_a, 'b':K_b, 'c':K_c, 'd':K_d, 'e':K_e, 'f':K_f,
              'g':K_g, 'h':K_h, 'i':K_i, 'j':K_j, 'k':K_k, 'l':K_l,
              'm':K_m, 'n':K_n, 'o':K_o, 'p':K_p, 'q':K_q, 'r':K_r,
              's':K_s, 't':K_t, 'u':K_u, 'v':K_v, 'w':K_w, 'x':K_x,
              'y':K_y, 'z':K_z}
    
    pygame.init()

    # get screen resolution
    resolution = (pygame.display.Info().current_w, pygame.display.Info().current_h)

    surface = pygame.display.set_mode(resolution, FULLSCREEN)
    
    image = pygame.image.load(path)
    image = pygame.transform.scale(image, resolution)
    
    rect = image.get_rect(); rect.center = resolution[0]//2, resolution[1]//2
    
    surface.blit(image, rect)
    pygame.display.update()

    running = True
    while running:
        for event in pygame.event.get():
            if event.type == pygame.KEYDOWN: #press-key events
                if event.key == key_dict[key]: # if C key is pressed ...
                    running = False
    pygame.quit()

当我将其设置为 pygame.FULLSCREEN 时会显示黑屏,但是当我将其设置为 pygame.RESIZABLE 时会显示图像。

我应该怎么做才能解决黑屏问题?

标签: pythonplotpygame

解决方案


我找到了解决方案。我不知道 pyglet.FULLSCREEN 标志是如何工作的,但还有另一种方法可以在不使用它的情况下做到这一点。您可以加入两个标志,pyglet.SCALED 和 pyglet.NOFRAME,它应该可以正常工作。

surface = pygame.display.set_mode(resolution, pygame.SCALED|pygame.NOFRAME).

pygame.SCALED 是指调整为全屏模式,而 pygame.NOFRAME 去除条形图和其他显示部分。

它将在整个屏幕上绘制您想要的图像,而不显示条形图、菜单等。


推荐阅读