python - 输入后如何内联打印
问题描述
我想通过提示接收具有以下结构的输入:
-----------------------------
| |
| Digit your name:[] |
| |
-----------------------------
其中 [] 是输入。
如果我做
a = int(input('| |'))
它打印:
| | []
或者如果我这样做:
print('| {0} |' .format(input('')))
结果是相似的。
我该怎么做?谢谢!
解决方案
正如其他人已经提到的,在原始 python 中是不可能的。改用诅咒,但这需要一点训练时间。
我只是做了一些测试,print(..., end='\r')
然后我想出了以下“解决方案”。它没有正确设置位置标记,但看起来像是在方括号内输入。
可能你需要安装 python 库 getkey pip3 install --user getkey
。
#!/usr/bin/env python3
from getkey import getkey, keys
s = ""
print(f'Digit your name: \"{s}\"', end='\r')
while (key := getkey()) != keys.ENTER:
if key != keys.BACKSPACE and key not in [keys.LEFT, keys.RIGHT, keys.DOWN, keys.UP]:
s += key
print(f'Digit your name: "{s}"', end='\r')
elif key == keys.BACKSPACE:
s = s[:-1]
print((len(f"Digit your name: \"{s}\"")+1) * " ", end='\r')
print(f'Digit your name: \"{s}\"', end='\r')
print("\n" + s)
至少这在 Linux 上是有效的,除了错误设置的文本标记。
推荐阅读
- python - Tiktok Webscraping 使用 Beautifulsoup,但没有从频道获取视频 url 或视频 id
- python - 我可以将列表中的 2 个连续空字符串合并为 1 个空字符串,这样当我们有 4 个空字符串时,它应该合并并生成 2 个空字符串
- php - laravel + react 不使用 localhost 加载 React 的东西(没有 php artisan serve)
- spring-boot - Spring Boot logback-spring.xml 在路径 /var/log 下创建一个日志文件,即使在 xml 和 application.properties 文件中定义了自定义日志路径
- .net-core - 验证注解 - 实体框架核心
- flutter - 无法升级 Flutter:未配置源存储库
- c# - 字符串值不能通过类方法赋值
- python - 在 Heroku 生产期间如何处理 google 服务帐户 json 文件
- isabelle - Isabelle/HOL 中权利取消的定义
- android - android AVD arm 无法启动