-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()
我怎樣才能增加一個計數器,並使用全局變量它避免?
您是否嘗試改變'調度中的名字......'功能?我覺得python會被'count = count'這行弄糊塗了。由於名稱完全相同,因此無法區分差異。 –
我會編輯這個問題,我忘了刪除這一行,我試圖檢查是否從另一個變量複製值會改變任何東西。謝謝回答! –