我有一个相对简单的脚本和一个可能很简单的问题。 在互联网上,我收集了一些关于如何在我的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会询问我是否想要在运行时杀死脚本。
答案 0 :(得分:1)
您可以使用input()来产生相同的效果。
import time
def mainmenu():
while(True):
print ('1. Scan')
print ('2. Ping')
print ('3. Exit')
x= input()
if x==1:
print ('Option 1\n')
elif x==2:
print ('Option 2\n')
elif x==3:
print ('Exiting\n')
exit(0)
else:
print ('none of the specified options were chosen')
time.sleep(0.3)
exit(0)
mainmenu()
答案 1 :(得分:1)
使用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()