2014-07-14 61 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

我會編輯這個問題,我忘了刪除這一行,我試圖檢查是否從另一個變量複製值會改變任何東西。謝謝回答! –

回答