我是Python新手,我想做一个简单的autoclicker作为一个很酷的入门项目。在
我希望用户能够指定一个点击间隔,然后用热键打开和关闭自动点击。在
我知道Ctrl-C,您将在我当前的代码中看到这一点,但我希望程序能够正常工作,这样就不必在python窗口中激活热键。在
import pyautogui, sys
print("Press Ctrl + C to quit.")
interval = float(input("Please give me an interval for between clicks in seconds: "))
try:
while True:
pyautogui.click()
except keyboardInterrupt:
print("\n")
我需要制作一个tkinter消息框来进行切换还是可以使用热键?在
谢谢你的帮助。在
更新
^{pr2}$
首先,如果您想监视Python窗口之外的全局输入,您将需要pyHook或类似的东西。它允许你监视键盘事件。我选择了按
F3
和F4
键来启动和停止自动舔板机。在为了完成您的要求,我所知道的最好的方法是创建一个执行单击的进程,并通过使用队列与它进行通信。当按下
F4
键时,它将向队列添加一个"Exit"
字符串。自动点击器将识别出这一点,然后返回。在在按下
F4
键之前,队列将保持为空,queue.Empty
异常将持续发生。这将执行一次鼠标单击。在请记住,这个实现远非完美,但希望它能作为一个起点有所帮助。在
为什么我不能使用简单的while循环或if/else语句?
while循环是阻塞的,这意味着当循环运行时,它会阻止所有其他代码的执行。在
所以一旦clicker循环启动,它将无限期地停留在循环中。当发生这种情况时,你不能检查F4键的按下情况,因为循环将阻止任何其他代码的执行(即检查按键的代码)。因为我们希望自动点击和按键检查同时发生,所以它们需要是单独的过程(这样它们就不会互相阻止)。在
检查按键的主进程需要能够以某种方式与自动点击程序进行通信。因此,当按下
F4
键时,我们希望单击过程退出。使用队列是通信的一种方式(还有其他方法)。自动单击器可以从while循环内部连续检查队列。当我们想停止点击时,我们可以从主进程向队列添加一个"Exit"
字符串。下一次clicker进程读取队列时,它将看到这个并中断。在相关问题 更多 >
编程相关推荐