###################################################
# demo running two distinct mainloop calls;
# each returns after the main window is closed;
# save user results on python object: gui is gone;
# guis normally configure widgets and then run
# just one mainloop, and have all their logic in
# callbacks; this demo uses mainloop calls to
# implement two modal user interactions from a
# non-GUI main program; it shows one way to add
# a GUI component to an existing non-GUI script;
###################################################


from Tkinter import * 
from tkFileDialog import askopenfilename, asksaveasfilename 

class Demo(Frame):
    def __init__(self,parent=None):
        Frame.__init__(self,parent)
        self.pack()
        Label(self, text ="Basic demos").pack() 
        Button(self, text='open', command=self.openfile).pack(fill=BOTH)
        Button(self, text='save', command=self.savefile).pack(fill=BOTH)
        self.open_name = self.save_name = ""
    def openfile(self):                         # save user results
        self.open_name = askopenfilename()      # use dialog options here
    def savefile(self):
        self.save_name = asksaveasfilename(initialdir='D:\\temp')

if  __name__ == "__main__":
    # display window once
    print 'popup1...'
    mydialog = Demo()              # attaches Frame to default Tk()
    mydialog.mainloop()            # display; returns after windows closed
    print mydialog.open_name       # names still on object, though GUI gone
    print mydialog.save_name
    # Non GUI section of the program uses mydialog here 

    # display window again
    print 'popup2...'
    mydialog = Demo()              # recreate widgets again
    mydialog.mainloop()            # window pops up again
    print mydialog.open_name       # new values on the object again
    print mydialog.save_name
    # Non GUI section of the program uses mydialog again 
    print 'ending...'