import time
import sys
import pyautogui
import threading
import inspect
import ctypes
from pynput import mouse
TAG = False
def on_click(x, y, button, pressed):
global TAG
if pressed:
# Pressed 鼠标按下
TAG = True
sys.exit()
def s():
global TAG
with mouse.Listener(on_click=on_click) as listener:
if TAG:
print('tc')
else:
listener.join()
def t():
global TAG
try:
while True:
# print("Press Ctrl-C to end")
x,y = pyautogui.position() #返回鼠标的坐标
posStr="Position:"+str(x).rjust(4)+','+str(y).rjust(4)
if TAG:
print(posStr)#打印坐标
break
time.sleep(0.2)
except KeyboardInterrupt:
print ('end....')
def _async_raise(tid, exctype):
"""raises the exception, performs cleanup if needed"""
tid = ctypes.c_long(tid)
if not inspect.isclass(exctype):
exctype = type(exctype)
res = ctypes.pythonapi.PyThreadState_SetAsyncExc(tid, ctypes.py_object(exctype))
if res == 0:
raise ValueError("invalid thread id")
elif res != 1:
# """if it returns a number greater than one, you're in trouble,
# and you should call it again with exc=NULL to revert the effect"""
ctypes.pythonapi.PyThreadState_SetAsyncExc(tid, None)
raise SystemError("PyThreadState_SetAsyncExc failed")
def stop_thread(thread):
_async_raise(thread.ident, SystemExit)
if __name__ == '__main__':
t1 = threading.Thread(target=t)
t2 = threading.Thread(target=s,daemon=True)
t1.start()
t2.start()
time.sleep(0.5)
# stop_thread(t1)
stop_thread(t2)