python - 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 时会显示图像。
我应该怎么做才能解决黑屏问题?
解决方案
我找到了解决方案。我不知道 pyglet.FULLSCREEN 标志是如何工作的,但还有另一种方法可以在不使用它的情况下做到这一点。您可以加入两个标志,pyglet.SCALED 和 pyglet.NOFRAME,它应该可以正常工作。
surface = pygame.display.set_mode(resolution, pygame.SCALED|pygame.NOFRAME).
pygame.SCALED 是指调整为全屏模式,而 pygame.NOFRAME 去除条形图和其他显示部分。
它将在整个屏幕上绘制您想要的图像,而不显示条形图、菜单等。
推荐阅读
- javascript - 如何为不同的域设置 cookie?
- docker - 使用 Docker-Compose UP 进行 Elixir 测试
- c++ - 函数中使用的函数指针的参数问题
- python-3.x - 搜索 df2.col2 中的字符串作为 df1.col1 中的子字符串,并将其替换为 df2.col1 中的字符串
- sql - SQL对具有不同日期条件的同一列求和
- typescript - 问题从导出导入 Typescript ES6
- docker - 如何清理 linux 机器上的 docker 容器和镜像
- javascript - 当按下注册按钮时,注册表会重新呈现一瞬间
- jquery - 按钮 css 禁用按钮
- javascript - 如何将参数从函数传递到引导模式再到操作方法