每次按下鼠标,我都需要增加一个计数器变量count
。我不想使用全局变量,因此我得到以下错误:
如果我在global name 'count' is not defined
函数中使用global count
行,我会得到on_mouse_press
。
如果我不使用global
行,则会收到错误UnboundLocalError: local variable 'count' referenced before assignment
代码如下:
import pyglet
from pyglet import clock
import time
from pyglet.gl import *
from pyglet.window import mouse, key, Window
def dispatch_mouse_events(mywindow, count, dataclick, datatime):
@mywindow.event
def on_mouse_press(x, y, button, modifiers):
#global count
timeNow = time.clock()
if button == mouse.LEFT:
dataclick[count] = '-1'
datatime[count] = timeNow
if button == mouse.RIGHT:
dataclick[count] = '1'
datatime[count] = timeNow
count += 1 # increase counter
return count
def mymain():
mywindow = Window(fullscreen = False)
framerate = 60.0
clock.set_fps_limit(framerate)
mywindow.set_visible(True)
# Necessary variables for the data file
count = 0 # counter for each click
dataclick = [0]*15000
datatime = [0]*15000
while not mywindow.has_exit:
startMs = clock.tick()
mywindow.dispatch_events()
count = dispatch_mouse_events(mywindow, count, dataclick, datatime)
# Display frame
mywindow.clear() # clear window
fps.draw()
mywindow.flip()
pass
if __name__ == "__main__":
fps = pyglet.clock.ClockDisplay(color=(1,1,1,1))
mymain()
如何增加计数器并避免使用全局变量?
答案 0 :(得分:1)
听起来你想要一个函数的静态变量。这是一个python示例...
What is the Python equivalent of static variables inside a function?