如何在Python中编辑输入的文本

3
我正在使用Python构建命令行应用程序,并且需要能够打印一些内容,然后用户可以编辑并将其返回给我。
我知道Input()不适合我的情况,因为用户无法修改您提供的文本。有没有办法可以做到这一点?

1
你可能需要使用类似Tkinter的完整用户界面(UI),或者使用像Curses这样的库。在普通控制台中进行文本操作相对有限。 - undefined
这是一个系统问题,据我所知,控制台不支持这个功能(除非我错了),所以你需要运行另一个应用程序,用户可以在输入控件中输入数据。 - undefined
但以vim为例,用户可以修改vim中的文本。 - undefined
vim是一个用C语言编写的应用程序,它在C语言中构建其窗口,所以对于你使用Python来说有点不相关。(你可以在Python中使用C语言,但我认为这比其他可用解决方案要复杂一些) - undefined
4个回答

2
我认为实现这一点的一种方法是使用键盘输入监听器。通过这种方式,您可以确定用户正在做什么(所有按下的字符以及退格),并打印编辑后的文本。
您可以查看这个答案,其中提供了如何在Linux/Windows中实现此功能的示例:Key Listeners in python? 如果您正在寻找用户界面(而不是命令行),则可以使用Tkinter显示一个文本框,用户可以在其中输入数据。
例如(基于https://effbot.org/tkinterbook/entry.htm):
from Tkinter import *

master = Tk()

e = Entry(master, width=500)
e.pack()

e.focus_set()

def callback():
    print e.get()

b = Button(master, text="get", width=50, command=callback)
b.pack()

mainloop()

0

readline 是一个系统的名称,它允许用户编辑终端输入(默认情况下是在微型Emacs环境中)。您可以使用 readline.insert_text 来提供要编辑的文本。其中一种支持的方法是在调用 input 之前通过 set_pre_input_hook 来调用它。


0
所以,正如Anatoly所说的那样,我要学习curse,因为我需要其他一些curse可以做的事情。谢谢所有回复我的人。我还会使用read line.insert_text。

-2
你可以这样做:
import os
os.system('clear')

如果你正在使用Windows,可以使用os.system('cls')清屏 :)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接