Python 2.7 python中def()语句内的标志增量错误

Python 2.7 python中def()语句内的标志增量错误,python-2.7,numpy,opencv,Python 2.7,Numpy,Opencv,我编写了一个示例代码,它打印鼠标点击,如果点击了特定的点,则会显示一个递增1的标志。当点击其他位置时,同一个标志会减少1。同时打印该标志。但是出现了一些错误。如何避免 import cv2 import glob image_count=0 global file_number global total_files file_number=30 def click_event(event, x, y, flags, param): if event == cv2.EVENT_LBUTTO

我编写了一个示例代码,它打印鼠标点击,如果点击了特定的点,则会显示一个递增1的标志。当点击其他位置时,同一个标志会减少1。同时打印该标志。但是出现了一些错误。如何避免

import cv2
import glob
image_count=0
global file_number
global total_files
file_number=30
def click_event(event, x, y, flags, param):
    if event == cv2.EVENT_LBUTTONDOWN:       
    print x, y
    if 28<x<287 and 29<y<65:                          #open     
        file_number=100
        print(file_number)      
    if 33<x<144 and 89<y<120:                         #prev
        file_number=file_number-1       
        print(file_number)
    if 163<x<283 and 91<y<122:                         #next
        file_number=file_number+1
        print(file_number)

imdir = '/media/aju/21D83BA336AE27A9/idcard/'
ext = ['png', 'jpg', 'gif']    # Add image formats here

files = []
[files.extend(glob.glob(imdir + '*.' + e)) for e in ext]

images = [cv2.imread(file) for file in files]
print(files)
total_files=len(files)
print(total_files)
img = cv2.imread('menu.png')
cv2.imshow('Main Menu', img)
cv2.setMouseCallback("Main Menu", click_event)
cv2.waitKey(0)
cv2.destroyAllWindows

我解决了这个问题,将变量
file\u number
声明为
global
inside
def()

如果
x==40
y==100
,那么
filenumber
应该有什么值呢?实际上x和y是鼠标在图像上单击的位置。第一次单击相应的位置就会出现这些错误。**您的答案:-**`这取决于点击次数`我想提示您错误的原因。如果
x
/
y
具有这些值,则仅输入
#prev
案例,其中执行
filenumber=filenumber-1
。但是如果在第一次单击时发生这种情况,
filenumber
以前从未定义过,这将导致您看到的错误。您需要确定
filenumber
的初始值,以便在所有情况下都可以执行
#prev
块(或者确保在输入
#open
之前不能输入)但是x==40和y==100只是一个位置。如果我第一次点击位置满足,打开工作,然后如果我按下一个位置满足,prev将导致相同的错误。(根据概念,第一次点击“打开”,下一次点击“prev”,文件编号设置为100,正确吗?但为什么会发生错误?)
Traceback (most recent call last):
  File "final07_11_2018.py", line 14, in click_event
    file_number=file_number-1       
UnboundLocalError: local variable 'file_number' referenced before assignment