Alright try this code. The only thing that i left out was inheriting from Frame, but since i cannot see your entire progam i did not want to do that for fear of breaking some other code. You had a lot of useless code in there and more code that was just a spaghetti mess. If you want to return a dict instead of a tuple like i did feel free :)
from Tkinter import * import tkSimpleDialog class EnterDataDialog(tkSimpleDialog.Dialog): def __init__(self, parent, sdict): self.sdict = sdict tkSimpleDialog.Dialog.__init__(self, parent) def body(self, master): self.title("Set a Number") Label( master, text="Number ").grid(row=0, sticky=W) self.v = IntVar() entry = Entry(master, width=10, textvariable=self.v) entry.grid(row=0, column=1) #i told you to explicitly grid a widget you want to call later self.v.set( "%d" % self.sdict["anumber"] ) return entry #return widget that recieves focus def validate(self): try: self.v.get() except: return 0 return 1 def apply(self): self.result = self.v.get() class IntVar_GUI(): def __init__(self, master): self.master = master master.title('Control Variable Fun') frame = Frame(master, height=200, width=200, takefocus=1, highlightthickness=2, highlightcolor='blue') frame.pack() self.anumber = 123 # Want name and value to be configurable menu = Menu(master) master.config(menu=menu) mainMenu = Menu(menu) menu.add_cascade(label="My Menu", menu=mainMenu) mainMenu.add_command(label="Enter Data", command=self.Set_Enter_Data) self.master.protocol("WM_DELETE_WINDOW", self.onQuit) frame.focus_set() def Set_Enter_Data(self): sdict = {"anumber":self.anumber} d = EnterDataDialog(self.master, sdict) if d.result: print "User Entered: ", d.result else: print 'The idiot pressed cancel!' def onQuit(self): self.running = False self.master.destroy() if __name__ == "__main__": root = Tk() app = IntVar_GUI(root) root.mainloop() -- http://mail.python.org/mailman/listinfo/python-list