2012-03-18 2 views
8

키를 누를 때 화면의 특정 부분을 클릭하는 매크로를 작성하고 있습니다.time.sleep에는 정수가 필요합니까?

나는 키를 누르면 처음으로 모든 것이 잘 실행됩니다.
그러나 오류의 다른 키를 눌러 결과 : 여기

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

코드입니다 :

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() 

그것은 DeleteRun 기능 pyHook에 의해 실행됩니다 처음 것, time.sleep() 수레를 받아들입니다.
다음 함수 호출에서 정수 만 허용하는 것으로 보입니다.

이 문제의 원인은 무엇입니까?
마우스 배열을 위해 5 초를 기다릴 수 없습니다! 그것은 시간을 절약하기로되어 있습니다!

사양 :

  • 파이썬 2.7.2
  • 윈도우 7 (32)
+1

'time_safe'로 import time을 할 수 있고'time' 대신'time_safe'를 사용할 수 있습니까? 아마도 pyHook은'time' 클래스로 뭔가를하고있을 것입니다. – Blender

+0

성공하지 못했습니다. 두려워요. 그러나 나는 그것이 번갈아 작동하고 실패한다는 것을 알아 차렸다. –

+0

아마도'time import sleep'에서 구체적으로 시도해 보시겠습니까? 다른 모듈 전에'수입 시간, functools'하고 사용 후에'DeleteRun (이벤트)에서'수면 = functools.partial (time.sleep, 0.1) '과 : –

답변

5

오케이, 어때?

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

내가해야 아마이 구글-FU보다 더 작은 것을 고백 : DeleteRun에 진정한 수익을 추가 this question에 대한 답을 읽어 보시기 바랍니다.

+1

좋은 하나님, 당신이 해냈어! –

+0

아마도 다른 문제가 있습니다. http://stackoverflow.com/questions/9763053/pyhook-giving-up –

-1

내가 윈도우 이번에 문제가 있는지 모르겠지만, 당신은 날조 시도 할 수 파일 디스크립터없이 select()를 사용하여 고정밀 수면.

+0

구현 예를 들어 주시겠습니까? –

관련 문제