python-3.x - 在非本地声明之前分配变量
问题描述
问题 :
块“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()
解决方案
推荐阅读
- javascript - 从使用 Flask 组织的表单中收集数据
- sql - 将查询/表返回到变量中
- python - 查找具有轮廓的对象的旋转
- r - ggplot2 中辅助 y 轴的更好转换
- opencv - RE:在 Debian Buster 上使用 GCC 8.3.0-1 编译 OpenCV4.3.0
- javascript - 如何访问函数外的回调函数
- javascript - React Redux -> TypeError: Object(...) is not a function
- javascript - 在反应中获取元素的值
- c++ - 在 ncurses 中发布多个表单:最初只有最后一个表单可见
- swift - 同一 EnvironmentObject 的多个实例