def new_map(event): dialog = Toplevel(widget) form = Frame(dialog) Label(form, text='Width:').grid(row=0, column=0) Label(form, text='Height:').grid(row=1, column=0) size = [1, 1] comm = (lambda ix: (lambda event=None: size.__setitem__(ix, wb.get() + (event.char if event else '')))) wv = IntVar(value=10) wb = Spinbox(form, from_=1, to=65535, command=comm(0), textvariable=wv) wb.bind('<Key>', comm(0)) wb.grid(row=0, column=1) hv = IntVar(value=10) hb = Spinbox(form, from_=1, to=65535, command=comm(1), textvariable=hv) hb.bind('<Key>', comm(1)) hb.grid(row=1, column=1) form.pack() dialog.transient(widget) dialog.grab_set() wb.focus_set() widget.wait_window(dialog) create_new_map(wv.get(), hv.get())