python - 暂停python脚本等待按键
问题描述
我有一个相对简单的脚本和一个可能很简单的问题。在互联网上,我收集了一些关于如何在我的 python 代码中使用直接按键作为输入的解决方案。我更喜欢这些而不是 raw_input,因为它感觉更快。就像我有一个包含 3 个选项的菜单,每个选项都有 3 个选项,我可以轻松地按键盘上的 3 然后按 2 来到达我需要去的地方。
代码是:
import keyboard
import time
def mainmenu():
while(True):
print ('1. Scan')
print ('2. Ping')
print ('3. Exit')
if keyboard.is_pressed('1'):
print ('Option 1\n')
elif keyboard.is_pressed('2'):
print ('Option 2\n')
elif keyboard.is_pressed('3'):
print ('Exiting\n')
exit(0)
else:
print ('none of the specified options were chosen')
time.sleep(0.3)
exit(0)
mainmenu()
我只想要一些可以暂停代码的东西,我可以按下一个键。
由于某种原因我不能使用time.sleep()
。它也不喜欢在它之前或之后的瞬间输入。
如果我能得到一个函数来做这件事,那就太棒了,这样我就可以在其他地方输入它。
如果最后没有 else 语句,while 循环就会继续。
如果我在 while 循环中没有它,脚本会在 1 秒内打印选项,然后默认为 else,因为我在 1 秒内没有按下任何键。
我知道它可以工作,因为如果我取出 else 语句,并且在它一遍又一遍地向选项发送垃圾邮件时按 3,IDLE 会询问我是否想在脚本运行时终止它。
解决方案
使用keyboard.read_key()
,因为它将阻止其余代码的执行,直到发生键盘事件,然后返回该事件的名称,或者如果缺少,则返回其扫描代码。
import keyboard
import time
def mainmenu():
print ('1. Scan')
print ('2. Ping')
print ('3. Exit')
while(True):
a = keyboard.read_key()
if a == '1' or a == '2':
print("Option {} was pressed\n".format(a))
elif a == '3':
print("Exiting\n")
exit(0)
else:
print("None\n")
exit(0)
time.sleep(0.3)
mainmenu()
推荐阅读
- php - 网站在移动设备上完美显示,但谷歌表示其内容比屏幕更宽
- android - 如何以编程方式在通话后关闭免提电话,Android?
- .net - 我不能再调试我的 dotnet 项目了。发生无法加载源错误
- c++ - 没有合适的用户定义转换与重载的构造函数和继承
- python - 使用循环获取数据框列中的列表项
- drop-down-menu - 从第一个下拉列表的值中获取第二个下拉列表
- r - 是否有用于合并多个 asc 文件的 R 函数?
- android - 如何在android中将一个视图放在前面并使其他视图留在它后面?
- android - 如何正确提示用户开启“提高定位精度”设置?
- date - 知道开始和结束时如何使用谷歌应用程序脚本获取天数