[PyKDE] destructor not getting called?
Kaleb Pederson
kpederson at mail.ewu.edu
Fri Nov 8 17:33:15 GMT 2002
On Friday 08 November 2002 07:42, Kaleb Pederson wrote:
On Thursday 07 November 2002 10:14 pm, Boudewijn Rempt wrote:
> <snip>
>
> Hmmm... What I do is to create a Python class with the settings as
member
> variables. That makes it easier. But still, the Qt documentation says:
>
> A typical usage pattern for application exit or 'save preferences':
>
> QSettings settings;
> settings.insertSearchPath( QSettings::Windows, "/MyCompany" );
> // No search path needed for Unix; see notes further on.
> settings.writeEntry( "/MyApplication/background color", bgColor );
> settings.writeEntry( "/MyApplication/geometry/width", width );
> // ...
>
> So, depending on the destructor is not the only way to go.
I agree that it shouldn't be the only way to go. I would definitely
prefer to have a function that I can call that would write to disk. The
source code reveals, however, that a sync() call is only done in the
destructor. In fact, I have almost exactly what you mentioned. I have
a class that wraps it and provides some convenience functions for me. I
added in some print statements so I *know* that settings.write[Num]Entry
is getting called with all the correct values.
I guess my main question is, therefore, if I have a reference to a PyQt
object, in this case QSettings, and at the close of my program the
destructor never gets called for the PyQt object, then there _must_ be a
memory leak if any memory whatsoever is allocated by that PyQt object.
Is there a way that I can purposefully circumvent the destructor of a
PyQt object? In my application, I simply let the module level global go
out of scope assuming that the destructor would get called; it never
does.
Under *nix, has anyone ever seen QSettings actually write to the
settings file upon a write[Num]Entry? I have monitored the file for
existence upon a new write[Num]Entry and for changes upon a
write[Num]Entry and None have ever been made until the object goes out
of scope.
--Kaleb
More information about the PyQt
mailing list