2016-03-05 130 views
0

所以我一直在研究一个非常基本的'fastclick宏'。如果点击速度快于每秒5次左右,我希望程序点击更多。当它达到每秒5次点击的限制时,我希望它在您的最后一次点击和您的下一次点击之间点击,完成time.sleep(clicktime/2)。出于某种原因,我得到一个错误:time.sleep(类型为NoneType)

an integer is required (got type NoneType)

这里是我的代码:

import pythoncom, pyHook, sys, winsound, os 
import win32api, win32con, random, time 
from pyHook import HookManager 
from pyHook.HookManager import HookConstants 

macro = False 
tip = 1 
firstclick = 0 
secondclick = 0 
clicktime = 1 

bot = False 

def ExtraClick(): 
    global clicktime 
    global bot 
    x, y = win32api.GetCursorPos() 
    print('click') 
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,x,y,0,0) 
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,x,y,0,0) 
    bot = True 

def OnMouseClick(event): 
    global tip 
    global firstclick 
    global secondclick 
    global clicktime 
    global macro 
    global bot 

    if bot == True: 
     bot = False 

    if bot == False: 
     if tip == 0: 
      tip = 1 
      firstclick = time.time() 
      clicktime = firstclick - secondclick 
      print(clicktime) 


     elif tip == 1: 
      tip = 0 
      secondclick = time.time() 
      clicktime = secondclick - firstclick 
      print(clicktime)      


def OnKeyEvent(event): 
    global macro 
    if event.KeyID == 192: 
     if macro == True: 
      macro = False 
      print('off') 
      winsound.Beep(600, 30) 
      winsound.Beep(550, 30) 
     else: 
      macro = True 
      print('on') 
      winsound.Beep(1000, 30) 
      winsound.Beep(1100, 30) 
      clickspeed = 1 

hm = pyHook.HookManager() 
while True: 
    hm.MouseLeftDown = OnMouseClick 
    hm.KeyDown = OnKeyEvent  
    if clicktime < 0.20 and macro == True: 
     time.sleep(clicktime/2) 
     ExtraClick()  
    hm.HookMouse() 
    hm.HookKeyboard() 
    pythoncom.PumpWaitingMessages() 

我也试了一下,而不是使用time.sleep(clicktime/2)time.sleep(0.1),但是这给了同样的错误。

+2

什么是追溯? – zondo

+0

像@zondo一样,你应该发布错误引用(或其中最重要的部分)。这将显示该文件和该文件中引发此错误的行。我怀疑错误文件/行不是你的time.sleep()被调用的地方。 – CaptSolo

回答

0

问题不在于time.sleep,而在于pyhook - 它看起来需要处理程序返回一个值(True或False)。

看到这个答案:Help with pyHook error

添加return True到事件处理程序的结束。

+0

非常感谢,我误导了时间睡觉。 –

相关问题