首页 > 解决方案 > pyautogui 和 schedule 不能一起工作

问题描述

我正在编写一个每 10 秒按一次键的程序。为此,我使用了 pyautogui 和 schedule 的组合。

from pyautogui import press, typewrite, hotkey
import schedule

keystroke = "w"

def keypress():
    press(keystroke)
schedule.every(10).seconds.do(keypress)

但是当我运行它时,什么也没有发生。我等了 10 秒钟,但没有输入任何键。我究竟做错了什么?

标签: pythonschedulepyautogui

解决方案


让我们逐节检查您的代码,看看我们是否可以确定问题所在。

  • 你导入一些库
  • 您定义了一个希望每 10 秒运行一次的函数
  • 你告诉默认调度器你想每 10 秒调用一次你的函数
  • 然后你的程序终止

有两个有点相关的问题:

  • 您没有在代码中告诉调度程序运行任何已调度的作业
  • 您的代码在运行任何预定作业之前立即终止

要解决这些问题,您需要您的程序循环并让调度程序检查并运行任何挂起的作业。

以下代码定义了一个简单的作业,并安排它每 10 秒运行一次。然后它会永远循环,每秒检查一次待处理的作业。

import schedule
import time

def job():
    print("Running....")

schedule.every(10).seconds.do(job)

while True:
    schedule.run_pending()
    time.sleep(1)

如果您希望您的程序做的只是每 n 个单位时间循环并执行 1 个动作,那么调度模块就太过分了。它更适用于复杂系统,其中有大量计划的操作都在不同的周期上运行。


推荐阅读