python在循环时如何监控键盘输入并对当前的循环进行操作

physong100 2017-11-15 11:20:55
本人python新手,正在用python解决一些实际问题,现在想实现这样一个功能:
在一个循环里面检测键盘的输入,并根据输入的内容对当前的循环进行一些操作,或者在屏幕上增加几个按钮,用鼠标点也可以。
例如: 在一个 i=1到10的 for 循环里面,假如当前循环到i=5,我此时按下空格键,循环暂停,此时按->键,i从5跳到6,但循环还是暂停状态,输出的结果显示i=6的结果,同理若按<-键,i从5跳到4,输出显示i=4的结果,当再一次按下空格键时,循环继续。

因为需要看到每一次循环输出的结果,所以我是在每个循环里面加了2秒的延时,我的第一个想法是在这两秒的延时就用来等待键盘的输入,如果没有输入,那么过了这两秒就继续循环了。另外还有个想法是再开一个线程,专门用来检测键盘的,当接收到输入时就去操作执行循环的进程,不知这两种想法哪种更可取。

请大神指点一二。
...全文
3070 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
陌生人的天堂 2020-04-18
  • 打赏
  • 举报
回复
引用 5 楼 CVlearner_cq 的回复:
你好,请问你们是在pycharm中运行上述代码吗?我在pycharm中运行,只输出hello,输入什么都没用,这是怎么回事呢?
这个需要按下s或者c键后,再按回车键才能有效
CVlearner_cq 2017-11-23
  • 打赏
  • 举报
回复
你好,请问你们是在pycharm中运行上述代码吗?我在pycharm中运行,只输出hello,输入什么都没用,这是怎么回事呢?
云中不知人 2017-11-16
  • 打赏
  • 举报
回复
PyHook是一个基于Python的“钩子”库,主要用于监听当前电脑上鼠标和键盘的事件。http://pyhook.sourceforge.net/doc_1.5.0/ 监听事件加上你的逻辑
physong100 2017-11-16
  • 打赏
  • 举报
回复
谢谢,用@extend 的方法实现了功能,自己还尝试了第一个想法,主要是还不会如何让一个while循环执行固定的时间,后面有时间我再试试。 @云中不知人 看了PyHook,功能确实强大,但貌似我这个简单的需求还没必要用,以后有机会再用。
oyljerry 2017-11-16
  • 打赏
  • 举报
回复
主要就是根据你的逻辑,在for循环中每次都进行对应的检测。然后进行状态机转换
extend 2017-11-16
  • 打赏
  • 举报
回复
这个问题有意思,刚写的,亲测可用,供你参考。 #子线程监听键盘输入; #输入s,暂停,等待输入;输入c,继续; class tt(threading.Thread): i=2 input_str="" def __init__(self): threading.Thread.__init__(self) def run(self): while 1: input_kb = str(sys.stdin.readline()).strip("\n") if input_kb=='s': #stop self.i=1 print("子进程捕获了s") elif input_kb=="c": #continue self.i=0 print("子进程捕获了c") self.input_str=input_kb else: self.input_str=input_kb def main(): my_t = tt() my_t.start() i=0 while True: if my_t.i==1: while 1: print(my_t.i) input("请输入:") print("my_t.input_str"+my_t.input_str) if my_t.input_str=="->": i+=1 print(i) elif my_t.input_str=="<-": i-=1 print(i) elif my_t.input_str=="c": break my_t.i=2 i+=1 print('hello',str(i)) time.sleep(1) main()

37,717

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧