我正在用Python和库keyboard
编写一个基于文本的游戏。
在代码的某一点上,我必须收集一个通过以下代码得到的数字:
if menu == "test":
try:
x = int(input("Enter a Number: "))
except ValueError:
print("Please input integer only...")
但要将菜单设置为“测试”,我必须使用键盘键入2 1。 我的问题是,虽然菜单不是“测试”,但输入已经被收集。 运行代码时,我得到以下信息:
Enter a Number: 211
我可以很容易地在命令提示符下删除211,然后键入一些内容 但我希望它自动删除自己,这样我就可以:
Enter a Number:
我已经尝试过的:
input().clear()
input(None)
x = 0
#import os --at the beginning of the code
os.system("clear")
我认为我的目标有点不明确,所以我还编写了在已经显示的部分(但简化)之前的代码
menu4中的输入会记住我以前键入的所有内容(211) 但是我不想要它,输入已经是211了,不是什么都没有,因为我输入了211 但我不希望它是什么,当谈到菜单4它不是我试图知道我以前键入了什么
当我运行我想要的代码时,应该发生以下情况:
这种情况不应发生:
如果要避免在终端中显示输出,可以在MacOS和Linux上使用以下选项:
这是通过将TTY(终端仿真器99%的时间)设置为cbreak模式来实现的Which does请注意以下事项:
请注意,因为
readline
仍在使用中,所以您仍然可以像正常情况一样编辑键入的行在Windows上,我不知道如何轻松地做到这一点
如果要清除在用户按下enter键后键入的输入,这会有点困难,因为需要部分清除已打印的输出,这需要使用特殊的控制代码
针对Windows的一个可能更简单的解决方案:以下内容将清除MacOS和Linux上的整个终端,但也将在Windows Terminal中工作(与默认的cmd.exe不同!)
您还可以尝试通过colorama包将其用于普通的Windows终端,正如martineau的评论中所建议的
相关问题 更多 >
编程相关推荐