对进行中的程序进行按键控制

问题遇到的现象和发生背景

可以通过什么办法解决正在运行的程序,当接收到按键q就暂停,按键s就恢复,接收到按键ESC就退出程序

问题相关代码,请勿粘贴截图

def test(): # 每隔一秒打印一个加数无限循环
i = 1
while True:
i = i+1
print(i)
time.sleep(1)
test()

运行结果及报错内容

这是一个无线循环程序,只是一个测试程序,想做到按键对这个程序进行控制

我的解答思路和尝试过的方法

了解到可能需要pynput库和threading库,但是不知道如何去处理

我想要达到的结果

当接收到按键q就暂停,按键s就恢复,接收到按键ESC就退出程序

你题目的解答代码如下:

import threading
import time
from msvcrt import getch
key = 0
stop = False
def circle():
    global key,stop
    while(True):
        key = getch()
        if key==b'\x1b':
            break
        elif key==b'q':
            stop = True
        elif key==b's':
            stop = False


def test(): # 每隔一秒打印一个加数无限循环
    i = 1
    while True:
        if key==b'\x1b':
            break
        if not stop:
            i = i+1
            print(i)
        time.sleep(1)

threading.Thread(target=circle).start()
threading.Thread(target=test).start()

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632