2012-03-18 34 views
8

Tôi đang viết macro sẽ nhấp vào một số điểm nhất định trên màn hình khi tôi nhấn một phím.time.sleep yêu cầu số nguyên?

Lần đầu tiên tôi nhấn một phím, mọi thứ đều chạy tốt.
Tuy nhiên, bất kỳ kết quả báo chí quan trọng khác trong các lỗi:

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

Đây là mã:

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

Có vẻ như lần đầu tiên DeleteRun chức năng được điều hành bởi pyHook, time.sleep() chấp nhận nổi.
Trên bất kỳ cuộc gọi hàm nào sau đây, có vẻ như nó chỉ chấp nhận số nguyên.

Điều gì gây ra điều này?
Tôi không thể đợi 5 giây để sắp xếp chuột! Đó là nghĩa vụ phải tiết kiệm thời gian!

Specs:

  • python 2.7.2
  • của Windows 7 (32)
+1

Bạn có thể thực hiện 'thời gian nhập dưới dạng time_safe' và sử dụng' time_safe' thay cho 'thời gian' không? Có lẽ pyHook đang làm điều gì đó với lớp 'time'. – Blender

+0

Không thành công tôi sợ. Tôi đã nhận thấy tuy nhiên nó thay thế làm việc và thất bại. –

+0

Có thể thử đặc biệt 'từ thời gian nhập vào giấc ngủ'? –

Trả lời

5

Được rồi, làm thế nào về điều này? Thêm một lợi nhuận Đúng như DeleteRun:

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

tôi nên có lẽ thú nhận rằng đây là ít hơn google-fu: đọc câu trả lời cho this question.

+1

Chúa ơi, bạn đã hoàn thành nó! –

+0

Có vấn đề khác, có lẽ liên quan. http://stackoverflow.com/questions/9763053/pyhook-giving-up –

-1

Tôi không chắc chắn có chuyện gì với Windows thời gian này, nhưng bạn có thể thử giả mạo một ngủ chính xác cao bằng select() không có bộ mô tả tập tin.

+0

Bạn có thể cho tôi ví dụ về triển khai không? –

Các vấn đề liên quan