我需要在自动点击器上,当鼠标点击一次(使用“鼠标”模块)时,再按5次。但是,我还需要确保只有用户完成的点击才能激活它。目前(因为我不需要像以前那样不可阻挡的鼠标),它只打印“点击”。这就是我目前所拥有的
jack = 0
import keyboard
import mouse
import sys
from time import sleep
def spamClick(f, jeff):
if jeff <= 0:
jeff = jeff+1
for i in range(f):
#mouse.click()
print ("Clicking")
sleep(0.1)
jeff = 0
mouse.on_click(spamClick, args=(5, jack))
#keyboard.add_hotkey('ctrl+g', spamClick)
keyboard.add_hotkey('ctrl+#', mouse.unhook_all)
keyboard.add_hotkey('ctrl+#', sys.exit)
先谢谢你
一个简单的解决方法是有一个顶级变量跟踪状态。 问题是,您有一个函数,它执行一个再次启动的操作
它的功能与
这与无限循环相同,在您的情况下甚至更糟,因为您每次调用函数多次(每个操作5次)
因此,您可以选择以下方法来防止这种情况:
当您希望它接受单击时为True的顶级变量:
isUser=True
您调用的函数,而不是“spamclick”,它检查全局变量的状态,然后才触发代码:
我仍然不明白你的程序是如何“无休止地点击”而不是因为达到最大递归深度而崩溃的,但这应该是可行的(虽然非常有黑客味)
编辑:你应该使用更好的变量命名,而不是“jeff”,如果你不这样做,你的生活会变得更糟。例如,“isUser”表示它是一个布尔值(因为“iswhere”表示它将一个状态保持为布尔值),并表示输入是否由用户进行。或者,您可以使用
isFunctionRunning=False
来说明函数是否打开。当然,在我的例子中,你必须切换所有正确和错误的赋值,以使其仍然有意义相关问题 更多 >
编程相关推荐