Не могу вытащить переменную из функции, которая вызывается из библиотеки Python pynput
Элемент списка
Есть код , который заносит координаты кликов мыши в список w . Нужно вытащить w из функции в глобальную область. Пробовал объявлять w как global, но не работает. Оборачивал в другую функцию, не работает. Пробовал через дополнительный параметр w=[0] таким образом on_click(x, y, button, pressed, w=[0])
, тоже не работает. Как это сделать, может кто знает? Нужно передать значения из w в другой участок кода. Вообще возможно ли вытащить w из потока ?
from pynput import mouse
w=[]
def on_click(x, y, button, pressed):
global w
if pressed and button == mouse.Button.left:
w.append([x,y])
print(f'Координаты {(x,y)}')
print(w)
print(len(w))
return w
with mouse.Listener( on_click = on_click) as listener:
listener.join()
print(w) # здесь w невидима
Изменил код немного:
from pynput import mouse
w=[]
def on_click(x, y, button, pressed):
global w
if pressed and button == mouse.Button.left:
w.append([x,y])
print(f'Координаты {(x,y)}')
print(w)
print(len(w))
if len(w)==4:
listener.stop()
return w
listener = mouse.Listener(on_click=on_click )
listener.start()
print(w) # здесь печатает пустой список [] , т.к в самом начале w
#пустой. После четырёх кликов, w имеет 4 координаты.
# как получить эти координаты , условно на 154 -й строке кода,
# если допустить, что код длинный ?
Поток после 4 кликов прерывается. В консоле, если нажать на w можно видеть что переменной w присвоились все 4 координаты.
Источник: Stack Overflow на русском