Question

I'd like to be able to get input from the user (through raw_input() or a module) and be able to have text automatically be already entered that they can add to, delete, or modify. I know in javascript when you're using a prompt, you can do it like

var = prompt("Enter your name: ","put name here")

and it will appear as:

Enter your name:
put name here

where 'put name here' is in the text box and can be modified. I'm hoping to implement this in a shell environment (I use unix) as opposed to a window.

Any ways to do this?

Oh and tell me if I need to clarify what I am hoping for more.


I don't think you guys understand what I'm trying to do.

I basically want to include the prompt in the input, but have the user be able to backspace out the prompt/edit it if they want.

The script would possibly be used for a simple shell based one line text editor, and a tab completion type thing.

Was it helpful?

Solution

On UNIX and UNIX-alikes, such as Mac OS X and Linux, you can use the readline module. On Windows you can use pyreadline.

If you do it the way minitech suggests in his comment, write a little function to make it easier:

def input_default(prompt, default):
    return raw_input("%s [%s] " % (prompt, default)) or default

name = input_default("What is your name?", "Not Sure")

OTHER TIPS

Mmm, kinda hack, but try this one.

Windows:

import win32com.client as win

shell = win.Dispatch("WScript.Shell").SendKeys("Put name here")
raw_input("Enter your name: ")

In Linux/Unix environment, you can use the pyreadline, readline or curses libraries. You can find one possible solution here:

def rlinput(prompt, prefill=''):
    readline.set_startup_hook(lambda: readline.insert_text(prefill))
    try:
        return raw_input(prompt)
    finally:
        readline.set_startup_hook()
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top