我刚刚学会了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 来停止代码,但是时间窗口不够长,我想使其尽可能小。 我想要的是一种在执行自动化命令时退出脚本的方法。
您可以使用另一个线程
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