簡體   English   中英

在按下鍵時記錄(獲取)鼠標單擊位置,並在python中釋放相同的鍵時停止記錄

[英]Record (get) mouse click position while key is pressed and stop recording when same key is released in python

我正在創建一個腳本,如果用戶按f7鍵,它將開始記錄鼠標的點擊,當他釋放按鈕時,它應該停止,除非用戶關閉程序,否則這種情況會發生。

盡管按f7鍵,腳本仍顯示“無”,而不顯示單擊位置和“ f7”,而是顯示“無”。

在on_press函數中,當我們打印值時,它顯示為“ f7”,但是在on_click函數中單擊鼠標按鈕時,則顯示為“無”。

這是代碼

from pynput import mouse, keyboard
from pynput.keyboard import Key, Listener
import pickle

x_pos = []
y_pos = []
both_pos = []

pressed_key = None

def on_press(key):
    if (key==keyboard.Key.f7):
        pressed_key = "f7"
    else:
        pressed_key = None

def on_release(key):
    pass

def on_click(x, y, button, pressed):
    if pressed:
        #print ("{0} {1}".format(x,y))
        print(pressed_key)
        if pressed_key == "f7":
            x_pos.append("{0}".format(x,y))
            y_pos.append("{1}".format(x,y))
            #print("test" + x_pos + y_pos)
            print (x_pos + y_pos)
        #both_pos = x_pos, y_pos
        else:
            pass
        print (x_pos + y_pos)


mouse_listener = mouse.Listener(on_click=on_click)
mouse_listener.start()

with keyboard.Listener(on_press = on_press, on_release = on_release) as listener:
    try:
        #listener.start()
        listener.join()
    except MyException as e:
        print('Done'.format(e.args[0]))

找到了問題。 因為在on_press中我沒有使用全局pressed_key,所以它正在創建局部變量。

這是工作代碼。

from pynput import mouse, keyboard
from pynput.keyboard import Key, Listener
import pickle

x_pos = []
y_pos = []
both_pos = []

pressed_key  = None

def on_press(key):
    global pressed_key
    if (key==keyboard.Key.f7):
        pressed_key = "f7"
        print(pressed_key)
    else:
        pressed_key = None

def on_release(key):
    global pressed_key
    pressed_key = None

def on_click(x, y, button, pressed):
    if pressed:
        #print ("{0} {1}".format(x,y))
        print(pressed_key)
        if pressed_key == "f7":
            x_pos.append("{0}".format(x,y))
            y_pos.append("{1}".format(x,y))
            #print("test" + x_pos + y_pos)
            print (x_pos + y_pos)
        #both_pos = x_pos, y_pos
        else:
            pass
        print (x_pos + y_pos)


mouse_listener = mouse.Listener(on_click=on_click)
mouse_listener.start()

with keyboard.Listener(on_press = on_press, on_release = on_release) as listener:
    try:
        #listener.start()
        listener.join()
    except MyException as e:
        print('Done'.format(e.args[0]))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM