首页 > 解决方案 > 输入后如何内联打印

问题描述

我想通过提示接收具有以下结构的输入:

-----------------------------
|                           |
| Digit your name:[]        |
|                           |
-----------------------------

其中 [] 是输入。

如果我做

a = int(input('|   |'))

它打印:

|         | []

或者如果我这样做:

print('|  {0}  |' .format(input('')))

结果是相似的。

我该怎么做?谢谢!

标签: pythoninputlayout

解决方案


正如其他人已经提到的,在原始 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 上是有效的,除了错误设置的文本标记。


推荐阅读