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

AltStyle によって変換されたページ (->オリジナル) /