Creating a popup message box with an Entry field Creating a popup message box with an Entry field tkinter tkinter

Creating a popup message box with an Entry field


I'm a little confused about your two different blocks of code. Just addressing the first block of code, nothing happens because you never enter the mainloop. To do that, you need to call root.mainloop(). The typical way of doing this is to add a button to root widget and bind a callback function to the Button (which includes d=MyDialog() and root.wait_window(d.top))

Here's some basic code which I hope does what you want ...

from Tkinter import *import sysclass popupWindow(object):    def __init__(self,master):        top=self.top=Toplevel(master)        self.l=Label(top,text="Hello World")        self.l.pack()        self.e=Entry(top)        self.e.pack()        self.b=Button(top,text='Ok',command=self.cleanup)        self.b.pack()    def cleanup(self):        self.value=self.e.get()        self.top.destroy()class mainWindow(object):    def __init__(self,master):        self.master=master        self.b=Button(master,text="click me!",command=self.popup)        self.b.pack()        self.b2=Button(master,text="print value",command=lambda: sys.stdout.write(self.entryValue()+'\n'))        self.b2.pack()    def popup(self):        self.w=popupWindow(self.master)        self.b["state"] = "disabled"         self.master.wait_window(self.w.top)        self.b["state"] = "normal"    def entryValue(self):        return self.w.valueif __name__ == "__main__":    root=Tk()    m=mainWindow(root)    root.mainloop()

I get the value from the popupWindow and use it in the main program (take a look at the lambda function associated with b2).

Main window:

Main window

"Click me" window:

click me window

Main window while "click me" is open:

Main window with greyed out "click me"


import tkinter as tkfrom tkinter import simpledialogROOT = tk.Tk()ROOT.withdraw()# the input dialogUSER_INP = simpledialog.askstring(title="Test",                                  prompt="What's your Name?:")# check it outprint("Hello", USER_INP)

Enjoy ...


I did it in Tkinter without any classes. I created a function that starts a new window.

popup.Tk()popup.mainloop()

In that window there is an Entry field from where I get the text with a variable which value is: entry.get()

Then you can use that variable for whatever you need and it will take the text from that Entry field.