I am fed up with Python GUI toolkits...
rantingrick
rantingrick at gmail.com
Wed Jul 20 11:09:00 EDT 2011
On Jul 20, 9:27 am, sturlamolden <sturlamol... at yahoo.no> wrote:
> On 20 Jul, 16:17, Mel <mwil... at the-wire.com> wrote:
>
> > OTOH, if you intend to re-use the Dialog object, it's not a memory leak.
>
> It cannot be reused if you don't have any references pointing to it.
> Sure it is nice to have dialogs that can be hidden and re-displayed,
> but only those that can be accessed again.
I find that keeping a dialog alive (and hidden) is bad practice EXCEPT
in the case where a dialog will be used many, many times in an
application. Since that kind of re-usage is rare destroying the dialog
and freeing the graphical resources it consumes is important.
However a dialog should handle it's own state. That is, and
application should never have to keep up with dialog default values
and re-insert then every time, NO, the dialog should do this all by
itself.
My solution is to create a simple container class that creates and
destroys the dialog as needed (when show is called) however keeps a
state of the last user inputs so the main application does not have
to.
class Dialog():
def __init__(self):
self.state = []
# the dialog IS NOT created here!
def show(self):
# Create the dialog here
# and load any initial values
# from self.state.
def cb_okbutton(self):
# Process the inputs, store the
# current values in self.state
# and destroy.
def cb_cancelbutton(self)
# destroy the dialog.
This is a proper design pattern for all GUI dialogs.
*school-bell*
More information about the Python-list
mailing list