整数变量没有在python中更新

Con*_*sea 1 python pygame

在我的代码开头,我做了两个变量

WINDOW_WIDTH = 400
WINDOW_HEIGHT = 300
Run Code Online (Sandbox Code Playgroud)

之后,在def main()中,如果事件以下列方式发生,我会更改它们

while True:

    for event in pygame.event.get():
        if event.type == VIDEORESIZE:
            DISPLAY = pygame.display.set_mode(event.dict['size'], HWSURFACE | DOUBLEBUF | RESIZABLE)
            # Here, the integers are supposed to be being changed
            WINDOW_WIDTH, WINDOW_HEIGHT = DISPLAY.get_size()
            print("%d, %d" % (WINDOW_WIDTH, WINDOW_HEIGHT))

 drawArena()
Run Code Online (Sandbox Code Playgroud)

更改下方的打印声明表示已进行更改.然后在drawArena()中执行以下操作:

print("Drawing (%d, %d)" % (WINDOW_WIDTH, WINDOW_HEIGHT))
Run Code Online (Sandbox Code Playgroud)

但窗口高度和窗口宽度不变,并且具有与首次初始化时相同的值.

小智 5

您需要声明这些变量是全局变量

global WINDOW_HEIGHT,WINDOW_WIDTH
while True:
    for event in pygame.event.get():
        if event.type == VIDEORESIZE:
            DISPLAY = pygame.display.set_mode(event.dict['size'], HWSURFACE | DOUBLEBUF | RESIZABLE) # Here, the integers are supposed to be being changed
            WINDOW_WIDTH, WINDOW_HEIGHT = DISPLAY.get_size()
            print("%d, %d" % (WINDOW_WIDTH, WINDOW_HEIGHT))

drawArena()
Run Code Online (Sandbox Code Playgroud)