ошибка приращения флага внутри оператора def () в python - PullRequest
0 голосов
/ 07 ноября 2018

Я пишу пример кода, который печатает щелчок мышью, а если щелкнуть конкретную точку, то флаг увеличивается на единицу. когда нажимаешь на какую-то другую позицию, то тот же флаг уменьшается на единицу. Также печатается флаг. Но там есть какая-то ошибка. Как ее избежать?

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

Error

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

1 Ответ

0 голосов
/ 08 ноября 2018

Я решил объявить переменную file_number как global внутри def().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...