--------- Mensaje reenviado -------- > De: Peter Otten <__pete...@web.de> > Para: python-list@python.org > Asunto: Re: Calling function from another module > Fecha: Thu, 16 Dec 2010 13:16:30 +0100 > Grupos de noticias: comp.lang.python > > craf wrote: > > > Hi. > > > > The query code is as follows: > > > > ------------------------------------------------------ > > import Tkinter > > import tkMessageBox > > > > > > class App: > > def __init__(self, master): > > master.protocol("WM_DELETE_WINDOW",quit) > > > > > > def quit(): > > if tkMessageBox.askyesno('','Exit'): > > master.quit() > > > > > > master =Tkinter.Tk() > > app = App(master) > > master.mainloop() > > ------------------------------------------------------- > > > > As you can see, when I run and close the main window displays > > a text box asking if you want to quit, if so, closes > > application. > > > > Question: > > > > Is it possible to define the quit() function in another separate > > module?. > > I tried it, but it throws the error that the global name > > 'master' is not defined. > > You can have the modules import each other and then access the master as > <module>.master where you'd have to replace <module> with the actual name of > the module, but that's a bad design because > > (1) you create an import circle > (2) functions relying on global variables already are a bad idea > > Your other option is to pass 'master' explicitly and then wrap it into a > lambda function (or functools.partial): > > $ cat tkquitlib.py > import tkMessageBox > > def quit(master): > if tkMessageBox.askyesno('','Exit'): > master.quit() > > > $ cat tkquit_main.py > import Tkinter > > import tkquitlib > > class App: > def __init__(self, master): > master.protocol("WM_DELETE_WINDOW", lambda: tkquitlib.quit(master)) > > master = Tkinter.Tk() > app = App(master) > master.mainloop() > > Peter
Hi Peter. ¡Right!. Your example can separate the creation of the interface to the code execution. Thanks for your time. Regards Cristian -- http://mail.python.org/mailman/listinfo/python-list