Entry Field in a model dialog
from Tkinter import *
from tkMessageBox import askokcancel
class Quitter(Frame):
def __init__(self, parent=None):
Frame.__init__(self, parent)
self.pack()
widget = Button(self, text='Quit', command=self.quit)
widget.pack(expand=YES, fill=BOTH, side=LEFT)
def quit(self):
ans = askokcancel('Verify exit', "Really quit?")
if ans: Frame.quit(self)
fields = 'First Name', 'Last Name', 'Job'
def fetch(variables):
for variable in variables:
print 'Input => "%s"' % variable.get()
def makeform(root, fields):
form = Frame(root)
left = Frame(form)
rite = Frame(form)
form.pack(fill=X)
left.pack(side=LEFT)
rite.pack(side=RIGHT, expand=YES, fill=X)
variables = []
for field in fields:
lab = Label(left, width=5, text=field)
ent = Entry(rite)
lab.pack(side=TOP)
ent.pack(side=TOP, fill=X)
var = StringVar()
ent.config(textvariable=var)
var.set('enter here')
variables.append(var)
return variables
def show(variables):
popup.destroy()
fetch(variables)
def ask():
global popup
popup = Toplevel()
vars = makeform(popup, fields)
Button(popup, text='OK', command=(lambda v=vars: show(v)) ).pack()
popup.grab_set()
popup.focus_set()
popup.wait_window()
root = Tk()
Button(root, text='Dialog', command=ask).pack()
root.mainloop()
Related examples in the same category