2014-07-14 62 views
-1

每次按下鼠标时,我都需要增加一个计数器变量,即count。我不想使用全局变量,因此我得到以下错误:Python:无法增加函数中的计数器变量

我得到global name 'count' is not defined,如果我在on_mouse_press函数中使用global count行。

如果我不使用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

您是否尝试改变'调度中的名字......'功能?我觉得python会被'count = count'这行弄糊涂了。由于名称完全相同,因此无法区分差异。 –

+0

我会编辑这个问题,我忘了删除这一行,我试图检查是否从另一个变量复制值会改变任何东西。谢谢回答! –

回答