2017-01-17 5 views
0

geklickt hat, also versuche ich in Python ein kurzes Skript zu erstellen. Was ich tun möchte, ist, dass, wenn die Maus geklickt wird, die Maus auf eine beliebige Position zurückgesetzt wird (gerade jetzt in der Mitte des Bildschirms). Ich möchte, dass dies im Hintergrund läuft, damit es im Betriebssystem funktionieren kann (am wahrscheinlichsten Chrome oder ein Webbrowser). Ich würde es auch mögen, so dass ein Benutzer einen bestimmten Knopf (sagen Sie ctrl) halten konnte und sie wegklicken konnten und die Position nicht zurückgesetzt haben. Auf diese Weise konnten sie das Skript ohne Frustration schließen.Python Überprüfen Sie, ob die Maus

Ich bin mir ziemlich sicher, dass ich weiß, wie das geht, aber ich bin nicht sicher, welche Bibliothek zu verwenden. Ich würde es vorziehen, wenn es plattformübergreifend oder zumindest Windows + Mac wäre. Hier ist mein Code so weit:

#! python3 
# resetMouse.py - resets mouse on click - usuful for students with 
# cognitive disabilities. 

import pymouse 

width, height = m.screen_size() 
midWidth = (width + 1)/2 
midHeight = (height + 1)/2 

m = PyMouse() 
k = PyKeyboard() 


def onClick(): 
    m.move(midWidth, midHeight) 


try: 
    while True: 
     # if button is held down: 
      # continue 
     # onClick() 
except KeyboardInterrupt: 
    print('\nDone.') 

Antwort

1

konnte ich es nur mit win32api zu arbeiten. Es funktioniert, wenn Sie auf ein beliebiges Fenster klicken.

import win32api 
import time 

width = win32api.GetSystemMetrics(0) 
height = win32api.GetSystemMetrics(1) 
midWidth = int((width + 1)/2) 
midHeight = int((height + 1)/2) 

state_left = win32api.GetKeyState(0x01) # Left button down = 0 or 1. Button up = -127 or -128 
while True: 
    a = win32api.GetKeyState(0x01) 
    if a != state_left: # Button state changed 
     state_left = a 
     print(a) 
     if a < 0: 
      print('Left Button Pressed') 
     else: 
      print('Left Button Released') 
      win32api.SetCursorPos((midWidth, midHeight)) 
    time.sleep(0.001) 
0

konnte ich es für Windows pyHook und win32api funktioniert:

import win32api, pyHook, pythoncom 

width = win32api.GetSystemMetrics(0) 
height = win32api.GetSystemMetrics(1) 
midWidth = (width + 1)/2 
midHeight = (height + 1)/2 

def moveCursor(x, y): 
    print('Moving mouse') 
    win32api.SetCursorPos((x, y)) 

def onclick(event): 
    print(event.Position) 
    moveCursor(int(midWidth), int(midHeight)) 
    return True 

try: 
    hm = pyHook.HookManager() 
    hm.SubscribeMouseAllButtonsUp(onclick) 
    hm.HookMouse() 
    pythoncom.PumpMessages() 
except KeyboardInterrupt: 
    hm.UnhookMouse() 
    print('\nDone.') 
    exit() 
Verwandte Themen