<p>我用模块<code>keyboard</code>编写了一个代码。您可以使用<code>pip install keyboard</code>安装它。它显示left、right、end、home、enter、escape、backspace和许多其他键。<br/>
您可以使用函数<code>read_input</code>。它有两个选项<code>text</code>和<code>cancel</code>。<code>text</code>是要打印的文本,<code>cancel</code>是将取消输入的键。如果按<code>escape</code>,则返回<code>None</code>,如果<code>enter</code>,则返回键入的文本。<br/>
代码如下:</p>
<pre><code>def read_input(text="",cancel="esc"):
import keyboard,string as t
print(text,end="")
output = []
output2 = []
allowed = t.ascii_letters+"1234567890!@#$%^&*()-=_+{}[]|\:;',<>./?`~"+'"'
while True:
key = keyboard.read_event()
k = key.name
if key.event_type == "up":continue
if k == cancel:print("");return None
elif k == "enter":break
elif k == "end":output = output+output2;output2 = []
elif k == "home":output2 = output+output2;output = []
elif k == "left":
try:output2.insert(0,output.pop())
except:pass
elif k == "right":
try:output.append(output2.pop(0))
except:pass
elif k == "space":k = " ";output.append(k)
elif k == "backspace":output = output[:-1]
elif k in allowed:output.append(k)
foutput2 = ""
for put in output:
foutput2 += str(put)
for put in output2:
foutput2 += str(put)
for i in range(0,len(foutput2)+2):keyboard.press_and_release("backspace")
print(foutput2)
return foutput2
</code></pre>
<p>您可以像正常输入一样使用它:</p>
^{pr2}$
<p><br/><br/>
另一方面也有一些问题。<br/>
它从整个窗口读取密钥,而不仅仅是python。<br/>
在第一秒输入的键(执行时)可以被忽略。在</p>
<p>下面是一个动画:<br/>
<a href="https://i.stack.imgur.com/3lypT.gif" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/3lypT.gif" alt="GIPHY"/></a></p>