How do I create an input box with Python?

How do I create an input box with Python?

You could try the Tkinter module:

from tkinter import *

master = Tk()
e = Entry(master)


def callback():
    print e.get() # This is the text you may want to use later

b = Button(master, text = OK, width = 10, command = callback)




Of course, you may want to read a Tkinter tutorial.

The Tk library actually has a function that does this although it is nominally private. You can use it as follows.

import tkinter as tk

root = tk.Tk()
dialog = tk.Toplevel(root)
root_name = root.winfo_pathname(root.winfo_id())
dialog_name = dialog.winfo_pathname(dialog.winfo_id()) {0} widget {1}.format(dialog_name, root_name))

This will place your dialog centred over the specified window (in this case the root window). Ref.

In a real life application

Heres a version I made because in real life youll need to show an InputBox over the top of the Main Window/Form, and typically in a Modal (cant click on other windows) state, and then close it when the user clicks OK:

    # for Python2
    import Tkinter as tk
except ImportError:
    # for Python3
    import tkinter as tk

class App:
    def __init__(self):
        self.HEIGHT = 700
        self.WIDTH = 800    
        root = tk.Tk()
        root.width = self.WIDTH
        root.height = self.HEIGHT
        self.dialogroot = root
        self.strDialogResult =     
        self.canvas = tk.Canvas(root, height=self.HEIGHT, width=self.WIDTH)
        frame = tk.Frame(root, bg=#42c2f4), rely=0.02, relwidth=0.96, relheight=0.95, anchor=n)  
        # Here is the button call to the InputBox() function
        buttonInputBox = tk.Button(frame, text=Input Box, bg=#cccccc, font=60, 
        command=lambda: self.InputBox())   , rely=0.1, relwidth=0.90, relheight=0.8)    

    def InputBox(self):        
        dialog = tk.Toplevel(self.dialogroot)
        dialog.width = 600
        dialog.height = 100

        frame = tk.Frame(dialog,  bg=#42c2f4, bd=5), relheight=1)

        entry = tk.Entry(frame, font=40), rely=0.02, relheight=0.96)

        submit = tk.Button(frame, text=OK, font=16, command=lambda: self.DialogResult(entry.get())), rely=0.02, relheight=0.96, relwidth=0.3)

        root_name = self.dialogroot.winfo_pathname(self.dialogroot.winfo_id())
        dialog_name = dialog.winfo_pathname(dialog.winfo_id())

        # These two lines show a modal dialog {0} widget {1}.format(dialog_name, root_name))

        #This line destroys the modal dialog after the user exits/accepts it

        #Print and return the inputbox result
        return self.strDialogResult

    def DialogResult(self, result):
        self.strDialogResult = result
        #This line quits from the MODAL STATE but doesnt close or destroy the modal dialog

# Launch ...
if __name__ == __main__:
    app = App()

How do I create an input box with Python?

In the IDLE you can already ask the user for an input, like here where i have done a maths equation to be solved…

answer = int(input(What is the answer to 1+2?))
def equation(answer):
    if answer == 3:
        print (Correct!)
        print (Wrong, it is 3!)

then call the function…


Leave a Reply

Your email address will not be published. Required fields are marked *