如何使用 ctrl+q 等热键退出 python 脚本?

问题描述 投票:0回答:1

我刚刚学会了Python,正在尝试制作可以完成琐碎劳动的脚本,但希望有一个自定义热键来退出代码。 请原谅任何卡顿,我是编码新手,刚刚复制了其他堆栈溢出答案。

def theFunction():
    
    color = (255, 255, 255)

    s = pyautogui.screenshot(region=(386, 847, 300, 400))
    if s.getpixel((0, 0)) == color:
        pyautogui.moveTo(100, 100, duration = 1)  # do something here
        return
    
    print("a")
    print("b")

while True:
    if keyboard.is_pressed('ctrl+q'):
        print("You pressed 'a'.")
        break
    time.sleep(0.1)
    theFunction()

如果像素的颜色是纯白色,脚本会将我的鼠标移动到某个位置。 我发现,如果它检测到纯白色,那么我无法退出代码,因为它太忙于移动鼠标。所以我将它封装在一个函数中以打破 if 语句并添加一个 sleep 命令,这样它会给我一些时间使用 ctrl+q 来停止代码,但是时间窗口不够长,我想使其尽可能小。 我想要的是一种在执行自动化命令时退出脚本的方法。

python automation keypress
1个回答
0
投票

您可以使用另一个线程

the_function

import keyboard
import pyautogui
import multiprocessing


def the_function():
    while True:
        print('Doing something...')
        s = pyautogui.screenshot(region=(386, 847, 300, 400))
        if s.getpixel((0, 0)) == (255, 255, 255):
            pyautogui.moveTo(100, 100, duration=1)
            return

if __name__ == '__main__':
    p = multiprocessing.Process(target=the_function)
    p.start()
    while True:
        if keyboard.is_pressed('ctrl+q'):
            p.terminate()
            print('Process stopped...')
            break
© www.soinside.com 2019 - 2024. All rights reserved.