首页 > 解决方案 > 在非本地声明之前分配变量

问题描述

问题 :

块“event.type == pg.MOUSEMOTION”中的变量 offset_x、offset_y 给出错误SyntaxError: name 'offset_x' is assigned to before nonlocal declaration我尝试将这些变量声明为全局但我得到相同的错误消息。我不知道该怎么办。

import pygame as pg
import settings
from pointer import Pointer
import fractaltree
from railslider import Rail


pg.init()
# clock
clock = pg.time.Clock()


def screen_info_and_setfsrcreen():
    fullscreen_sz = pg.display.Info().current_w, pg.display.Info().current_h
    print('screen size =', fullscreen_sz)
    #if pg.display.Info().current_w != settings.width or pg.display.Info().current_h != settings.height:
    #    settings.screensize = (pg.display.Info().current_w - 100, pg.display.Info().current_h - 100)


screen_info_and_setfsrcreen()

screen = pg.display.set_mode(settings.screensize, pg.RESIZABLE)
# drawline for branches
global offset_x
global offset_y
offset_x = 0
offset_y = 0
def mousetraking(pointer):
    dragging = True
    if event.type == pg.MOUSEBUTTONDOWN:

        if event.button == 1:
            if pointer.collidepoint(*pg.mouse.get_pos()):
                dragging = True
                (Xmouse, Ymouse) = pg.mouse.get_pos()
                offset_x = pointer.posx - Xmouse
                offset_y = pointer.posy - Ymouse
    elif event.type == pg.MOUSEBUTTONUP:
        if event.button == 1:
            dragging = False

    elif event.type == pg.MOUSEMOTION:
        if dragging:
            mouse_x, mouse_y = event.pos
            pointer.update(mouse_x + offset_x, mouse_y + offset_y)
            print("did something")

    if dragging == False or event.type == pg.MOUSEBUTTONUP or event.type == pg.MOUSEBUTTONDOWN or event.type == pg.MOUSEMOTION:
        pointer.update(pointer.posx, pointer.posy)


# main loop
rail = Rail(20, 20, screen)
pointer = Pointer(20,20,screen)
dragging = False
displaying = True
while displaying:
    for event in pg.event.get():
        if event.type == pg.QUIT:
            displaying = False
    mousetraking(pointer)
    rail.update()
    pg.display.flip()
    clock.tick(60)
    screen.fill(settings.white)

pg.quit()

标签: python-3.xvariablessyntax-error

解决方案


推荐阅读