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