Python 当我尝试调整窗口大小时,pygame崩溃

Python 当我尝试调整窗口大小时,pygame崩溃,python,python-2.7,pygame,Python,Python 2.7,Pygame,去年4月在这个论坛上提出了这个问题。但是,唯一的答案是:“您的脚本在我的系统上运行,请检查并确保您拥有适用于您的python版本的pygame模块。”因此,我首先检查了这一点,然后它被签出。(我有Python2.7和Pygame 1.9.1版的Python2.7版本。) 所以不是这样,但是下面的代码产生了与另一个人报告的相同的错误: This application has requested the runtime to terminate it in an unusual way. Plea

去年4月在这个论坛上提出了这个问题。但是,唯一的答案是:“您的脚本在我的系统上运行,请检查并确保您拥有适用于您的python版本的pygame模块。”因此,我首先检查了这一点,然后它被签出。(我有Python2.7和Pygame 1.9.1版的Python2.7版本。)

所以不是这样,但是下面的代码产生了与另一个人报告的相同的错误:

This application has requested the runtime to terminate it in an unusual way. Please contact the application's support team for more info.
我希望原来的海报上说了他们做了什么来修复它,因为我被难住了。请注意,我在试图运行此操作的计算机上没有管理员权限。这可能是问题所在吗

脚本如下。(这直接取自《用Python和Pygame开始游戏开发》一书。)它一直运行到您尝试调整窗口大小的那一刻

background_image_filename = 'sushiplate.jpg'

import pygame
from pygame.locals import *
from sys import exit

SCREEN_SIZE = (640, 480)

pygame.init()
screen = pygame.display.set_mode(SCREEN_SIZE, RESIZABLE, 32)

background = pygame.image.load(background_image_filename).convert()

while True:

    event = pygame.event.wait()
    if event.type == QUIT:
        exit()
    if event.type == VIDEORESIZE:
        SCREEN_SIZE = event.size
        screen = pygame.display.set_mode(SCREEN_SIZE, RESIZABLE, 32)
        pygame.display.set_caption("Window resized to "+str(event.size))

    screen_width, screen_height = SCREEN_SIZE
    for y in range(0, screen_height, background.get_height()):
        for x in range(0, screen_width, background.get_width()):
            screen.blit(background, (x, y))

    pygame.display.update()

尝试删除“调整大小模式”设置上的颜色深度:

screen = pygame.display.set_mode(SCREEN_SIZE, RESIZABLE)

我得到了与你相同的错误,颜色深度保留在,当我删除它时,它消失了。我不知道它为什么会失败,但除了事件对象的大小、w和h字段设置为某个值之外,根本没有关于VIDEORESIZE事件的正式文档。(现在很难检查这一点,因为pygame.org现在已关闭,据说是由于服务器RAID错误,但您可以通过谷歌搜索信息并查看缓存页面。)

警告,您正在为每个触发的事件绘制。相反,您希望:

while True:

    for event in pygame.event.get():

        if event.type == QUIT:
            exit()
        elif event.type == VIDEORESIZE:
            # ...
        elif event.type == KEYDOWN:
            # ...
    # draw.
    pygame.display.update()
下一个代码没有意义:你想做什么

screen_width, screen_height = SCREEN_SIZE
for y in range(0, screen_height, background.get_height()):
    for x in range(0, screen_width, background.get_width()):
        screen.blit(background, (x, y))

pygame.display.update()

一件可能有效的事情是问另一个问题的操作员,谁知道,他可能会回答。他用平铺背景覆盖屏幕,但这是多余的光点,多次绘制相同的像素。我想他是想用普通的平铺布利特。