2

ユーザーがf7を押すとマウスクリックの記録が開始され、ボタンを離すと停止し、ユーザーがプログラムを閉じない限りこれが発生するスクリプトを作成しています。

f7 を押すとキーの記録を開始するコードを作成しましたが、キーが連続して押された位置にあるため、キーを離してもキーが記録され、複数のリスナーが開始され続け、データが冗長になり続けます。

また、f7をリリースした後、リスナーは停止しません

ここにコードがあります

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

x_pos = []
y_pos = []
both_pos = []
file = open("test.txt", "wb")
file.close()

def on_press(key):

    mouse_listener = mouse.Listener(on_click=on_click)
    if (key==keyboard.Key.f7):
        mouse_listener.start()
        print("done")
def on_release(key):    
    if (key==keyboard.Key.f7):
        mouse_listener.stop()
        print("closing file")
        #file.close()
def on_click(x, y, button, pressed):
    if pressed:
        print ("{0} {1}".format(x,y))
        x_pos.append("{0}".format(x,y))
        y_pos.append("{1}".format(x,y))
        #print (x_pos)
        #print (y_pos)      
        both_pos = x_pos, y_pos
        with open("temp.txt", "ab") as file:
            pickle.dump(both_pos, file)
        print(both_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]))
4

1 に答える 1