2012-03-18 6 views
8

Estoy escribiendo una macro que hará clic en ciertos puntos en la pantalla cuando presiono una tecla.time.sleep requiere enteros?

La primera vez que presiono una tecla, todo funciona bien.
Sin embargo, cualquier otro resultado pulsación de tecla del error:

time.sleep(0.1) 
TypeError: an integer is required 

Aquí está el código:

import win32api 
import win32con 
import time 
import pythoncom 
import pyHook 
import os 

def Click(x,y): 
    win32api.SetCursorPos((x,y)) 
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,x,y,0,0) 
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,x,y,0,0) 

def DeleteRun(event): 
    Click(1250, 741) 
    time.sleep(0.1) 
    Click(649,261) 
    time.sleep(0.1) 
    Click(651, 348) 
    time.sleep(0.1) 
    Click(800, 442) 
    time.sleep(0.1) 
    Click(865, 612) 


Click(20,20) 
KeyGrabber = pyHook.HookManager() 
KeyGrabber.KeyDown = DeleteRun 
KeyGrabber.HookKeyboard() 
pythoncom.PumpMessages() 

Parece que la primera vez que la función DeleteRun está dirigido por pyHook, time.sleep() acepta flotadores.
En cualquiera de las siguientes llamadas a funciones, parece que solo acepta números enteros.

¿Qué está causando esto?
¡No puedo esperar 5 segundos para la disposición del mouse! ¡Se supone que ahorra tiempo!

Especificaciones:

  • pitón 2.7.2
  • de Windows 7 (32)
+1

¿Se puede hacer 'import time as time_safe' y usar' time_safe' en lugar de 'time'? Tal vez pyHook está haciendo algo con la clase 'time'. – Blender

+0

No hay éxito, me temo. Sin embargo, he notado que alterna el trabajo y el fracaso. –

+0

Quizás intente específicamente 'from time import sleep'? –

Respuesta

5

Bien, ¿qué tal esto? Añadir un retorno Fiel a DeleteRun:

def DeleteRun(event): 
    Click(1250, 741) 
    time.sleep(0.1) 
    [...] 
    return True 

probablemente debería confesar que esto era poco más que google-fu: leer la respuesta a this question.

+1

¡Dios mío, lo has hecho! –

+0

Tener otro problema, quizás relacionado. http://stackoverflow.com/questions/9763053/pyhook-giving-up –

-1

no estoy seguro de lo que está mal con Windows esta vez, pero usted podría intentar falsificar una sueño de alta precisión con select() sin descriptores de archivo.

+0

¿Podría darme un ejemplo de implementación? –