【问题标题】:How can I edit an inputed text in python如何在python中编辑输入的文本
【发布时间】:2020-02-28 14:40:24
【问题描述】:

我正在用 python 构建一个命令行应用程序,我需要能够打印一些东西,然后用户编辑它并返回给我

我知道 Input() 不适合我的情况,因为用户不能修改你给他的文本。 有什么办法吗?

【问题讨论】:

  • 你可能需要使用像 Tkinter 这样的完整 UI,或者使用像 Curses 这样的库。普通控制台中的文本操作相当有限。
  • 这是相当系统的问题,因为我知道控制台不支持(除非我错了)所以您需要运行另一个应用程序,用户可以在其中将数据输入到输入控件中
  • 但以vim为例,用户可以修改vim中的文本
  • vim 是一个用 c 编写的应用程序,它用 c 构建它的窗口,所以它有点无关紧要,因为你是用 python 编写的。 (你可以在 python 中使用 c,但我认为它比其他可用的解决方案要复杂一些)

标签: python python-3.x


【解决方案1】:

我认为一种方法是使用 键盘输入侦听器 - 这样您就可以准确了解用户在做什么(所有字符被按下,以及退格)和打印编辑的文本。

你可以看看这个答案,它给出了如何在 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()

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      所以,正如阿纳托利所说,我要学习诅咒,因为我需要诅咒可以做的其他事情。感谢所有回复的人。我还将使用 read line.insert_text

      【讨论】:

        猜你喜欢
        • 2017-02-22
        • 2014-10-29
        • 1970-01-01
        • 1970-01-01
        • 2011-04-10
        • 1970-01-01
        • 2014-06-05
        • 2020-10-12
        • 2019-01-25
        相关资源
        最近更新 更多