###################################################
# 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...'